Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
Python Django:在父模型中存储公共字段_Python_Django_Inheritance - Fatal编程技术网

Python Django:在父模型中存储公共字段

Python Django:在父模型中存储公共字段,python,django,inheritance,Python,Django,Inheritance,我有一些模型: 上课地点(models.Model): name=models.CharField(unique=True) 班级酒吧(地点): 饮料=型号。ManyToManyField(“饮料”) 高级餐厅(地点): 餐食=型号。ManyToManyField(“餐食”) 这是一个多桌继承结构,每个酒吧只提供饮料,每个餐厅只提供餐食。一、 但是,需要每个地方的名称在所有地方都是唯一的-因此父placemodel 现在,多表继承假定父级和子级是独立的实体。这意味着当我想创建一个新的条时,我应

我有一些模型:

上课地点(models.Model):
name=models.CharField(unique=True)
班级酒吧(地点):
饮料=型号。ManyToManyField(“饮料”)
高级餐厅(地点):
餐食=型号。ManyToManyField(“餐食”)
这是一个多桌继承结构,每个酒吧只提供饮料,每个餐厅只提供餐食。一、 但是,需要每个地方的名称在所有地方都是唯一的-因此父
place
model

现在,多表继承假定父级和子级是独立的实体。这意味着当我想创建一个新的
条时,我应该这样做:

>> parent = Place(name='Myplace')
>> parent.save()
>> child = Bar(place=parent, drinks=mydrinklist)
>> child.save()
>> child = Bar(name='Myplace', drinks=mydrinklist)
>> child.save()
但在我的例子中,
Place
不是一个单独的实体:它不应该单独存在。它只是一个有一些限制的共享存储。我想要这样的东西:

>> parent = Place(name='Myplace')
>> parent.save()
>> child = Bar(place=parent, drinks=mydrinklist)
>> child.save()
>> child = Bar(name='Myplace', drinks=mydrinklist)
>> child.save()
其中,
name
属性自动传递给底层父模型,并且在调用
save()
时,将以静默方式创建一个
Place
模型。SQLAlchemy可以通过其多表继承实现这一点。在Django中有没有实现相同的方法?

Django解决了模型之间共享公共字段的问题:

class Place(models.Model):
    name = models.CharField(unique=True)

    class Meta:
        abstract = True

编辑:正如Daniel在评论中提到的,您提出的解决方案应该可以正常工作。这里有更多关于

的内容,但是关于全局
唯一的
约束呢?
name
现在不是应该分别存储在
bar
restaurant
表中吗?您是否尝试过覆盖
位置。save
方法并实现您在那里描述的逻辑?您是否尝试过建议的语法?这正是多表继承在Django中的工作方式,并且您所需的语法在您所展示的模型中正确工作。(事实上,您的第一个版本不起作用,因为
parent
不是条形图上的字段。)哇,这确实起作用了。django rest框架中的
name
字段出现了一些错误,我认为这与不正确的
save
调用有关;看来我错了。谢谢。