Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django models Django:用于多个表的单一模型_Django Models - Fatal编程技术网

Django models Django:用于多个表的单一模型

Django models Django:用于多个表的单一模型,django-models,Django Models,我有一张主桌 幻灯片 然后是一个站点特定的表,该表捕获该站点的一些额外细节。 Site1_幻灯片放映 在一个web应用程序(特定于一个站点)中,我想要一个单一的模型,即结合上面两个表的幻灯片。 目前我有下面的代码,但我不认为这是正确的。我不能做这样的事情 s=Slideshow.objects.get(slideshowId=1)作为Slideshows仅具有特性featurecategory和Slideshow。所以,我怎么能有一个名为Slideshow的模型,它由这两个表组成,但看起来像是一

我有一张主桌 幻灯片 然后是一个站点特定的表,该表捕获该站点的一些额外细节。 Site1_幻灯片放映

在一个web应用程序(特定于一个站点)中,我想要一个单一的模型,即结合上面两个表的幻灯片。 目前我有下面的代码,但我不认为这是正确的。我不能做这样的事情 s=Slideshow.objects.get(slideshowId=1)作为Slideshows仅具有特性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'

我想我找到了解决办法。 在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()可以工作