我有一张主表 幻灯片 然后是一个特定于站点的表,它捕获该站点的一些额外细节。 Site1_Slideshow
在网络应用程序(特定于网站)中,我想要一个单独的模型,即幻灯片,它结合了上面的两个表格。 目前我有下面的代码,但我不认为这是正确的。我不能做像这样的事情 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 :(得分: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 col映射到主键 slideshowabstract_ptr_id = models.IntegerField(primary_key = True,db_column = u'SlideshowId')
但没有雪茄。 我还没有测试插入,但是...... objects.all()工作