Django models Django:用于多个表的单一模型
我有一张主桌 幻灯片 然后是一个站点特定的表,该表捕获该站点的一些额外细节。 Site1_幻灯片放映 在一个web应用程序(特定于一个站点)中,我想要一个单一的模型,即结合上面两个表的幻灯片。 目前我有下面的代码,但我不认为这是正确的。我不能做这样的事情 s=Slideshow.objects.get(slideshowId=1)作为Slideshows仅具有特性featurecategory和Slideshow。所以,我怎么能有一个名为Slideshow的模型,它由这两个表组成,但看起来像是一个db表Django models Django:用于多个表的单一模型,django-models,Django Models,我有一张主桌 幻灯片 然后是一个站点特定的表,该表捕获该站点的一些额外细节。 Site1_幻灯片放映 在一个web应用程序(特定于一个站点)中,我想要一个单一的模型,即结合上面两个表的幻灯片。 目前我有下面的代码,但我不认为这是正确的。我不能做这样的事情 s=Slideshow.objects.get(slideshowId=1)作为Slideshows仅具有特性featurecategory和Slideshow。所以,我怎么能有一个名为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'
我想我找到了解决办法。 在Site1_幻灯片上,您需要添加一个列供django使用,我认为它始终与主键值相同。 它的名字是SlideshowAbstract\u ptr\u 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\u ptr\u id=models.IntegerField(primary\u key=True,db\u column=u'SlideshowId')
但是没有雪茄。
我也没有测试过插入,但是…objects.all()可以工作