2012-07-30 4 views
1

나는 메인 테이블을 가지고있다 슬라이드 쇼 그 사이트에 대한 몇 가지 추가 세부 정보를 캡처하는 사이트 특정 테이블. Site1_SlideshowDjango : 다중 테이블을위한 단일 모델

웹 앱 (사이트에만 해당)에서 위의 2 개 테이블을 결합한 단일 모델, 즉 슬라이드 쇼를 원합니다. 현재 아래 코드가 있지만 이것이 정확하다고 생각하지 않습니다. s = Slideshow.objects.get (slideshowId = 1)과 같은 일을 할 수 없습니다. 슬라이드 쇼는 featurecategory 및 slideshow 속성 만 가지고 있습니다. 그렇다면이 두 테이블로 구성된 Slideshow라는 모델을 어떻게 가질 수 있습니까?하지만 단일 db 테이블처럼 보입니다.

class SlideshowAbstract(models.Model): 
    slideshowid = models.IntegerField(primary_key=True, db_column=u'SlideshowId') # Field name made lowercase. 
    headline = models.TextField(db_column=u'Headline') # Field name made lowercase. 
    class Meta: 
     db_table = u'Slideshow' 

class Slideshow(models.Model): 
    slideshow = models.OneToOneField(SlideshowAbstract, primary_key=True,db_column=u'SlideshowId') 
    def __unicode__(self): 
     return self.slideshow.headline 
    class Meta: 
     db_table = u'Site1_Slideshow' 

답변

0

해결책을 찾았습니다. Site1_Slideshow에서 장고가 사용할 열을 추가해야합니다. 항상 기본 키 값과 같다고 가정합니다. 그 이름은 그 당신이되고 슬라이드 쇼 모델을 변경할 수 있습니다 추가되면 SlideshowAbstract_ptr_id 입니다

class Slideshow(SlideshowAbstract): 
    featureCategory = models.ForeignKey(Featurecategory,db_column=u'FeatureCategoryId') 
def __unicode__(self): 
    return self.headline 
class Meta: 
    db_table = u'Site1_Slideshow' 

그래서 행할 수 있지만 당신은 "첫 번째 모델을"하고 이미 스키마가없는 경우 가장 좋은. _ptr_id 열의 이름을 재정의 할 수 있으면 좋을 것입니다.

내가했던 내가 기본 키 slideshowabstract_ptr_id = models.IntegerField (primary_key와 = 사실, db_column = u'SlideshowId ')

하지만 시가이 PTR의 안부를 매핑 할 수 있는지 너무 슬라이드 쇼에 다음과 같은 추가 시도 . 테스트 한 삽입을 제외하고 ... objects.all() 작동

관련 문제