因此,我试图实现的是:我有两个模式A和B,其中有一个OneToOne关系。模型A的实例是总是在它们各自的模型B实例之前创建的。依赖于一个参数,我希望能够用不同的初始值初始化模型b的一个实例。
我想出的是定义一个ProtoTypeModel并用实际的模型对它进行子类,如下所示:
from django.db import models
#other imports
class PrototypeB(models.Model):
#define all fields
class B(PrototypeB):
pass通过使用dict = PrototypeB.objects.filter(**my criteria).values()[0]或来自Django Rest框架的自定义序列化程序,我将得到一个dict,然后我可以使用它实例化B模型的实例:B.objects.create(**dict)。
这是正确的做法,还是我错过了一个大点?
最好,D
发布于 2016-10-30 22:46:08
万一有人在路上碰到同样的问题,我就是这样做的。首先,我考虑实现我前面提到的解决方案。然而,通过对多表继承的研究,我发现这实际上是一个不起作用的继承。
多表继承将创建一个隐式OneToOne _ptr字段,当删除B实例时,该字段将触发级联删除行为,导致删除cascade类型模型。
我完成了PrototypeB和B两种模型的实现,这两种模型工作得非常好。
https://stackoverflow.com/questions/40314689
复制相似问题