2012-07-30 19 views
1

單一型號我有一個主表 幻燈片 然後捕獲了該網站的一些額外的細節站點特定表。 Site1_SlideshowDjango的:針對多個表的

在一個網絡應用程序(特定於一個網站)我想要一個單一的模型,即幻燈片,結合上面的兩個表。 目前我有下面的代碼,但我不認爲這是正確的。我不能做像 s = Slideshow.objects.get(slideshowId = 1),因爲幻燈片僅具有屬性featurecategory和幻燈片。那麼我怎麼能有一個叫做Slideshow的模型,由這兩個表組成,但看起來像是一個單獨的數據庫表。

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上,你需要添加一個供django使用的列,我認爲它始終與主鍵值相同。 它的名字是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列的名稱。

我也嘗試添加下列到幻燈片太多,如果我能這樣PTR山坳映射到主鍵 slideshowabstract_ptr_id = models.IntegerField(primary_key =真,db_column = u'SlideshowId')

,但沒有雪茄。 我還沒有測試插入,但... objects.all()作品