如何在Django

时间:2016-10-28 23:58:36

标签: django-models

所以我想要实现的目标如下: 我有两个模型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

通过使用Django Rest Framework中的dict = PrototypeB.objects.filter(**my criteria).values()[0]或自定义Serializer,我将得到一个dict,然后我可以用它来实例化我的模型B实例:B.objects.create(**dict)

这是正确的方法还是我错过了一个重点?

最佳, d

1 个答案:

答案 0 :(得分:0)

如果有人在他的路上遇到同样的问题,我就是这样做的。 首先,我考虑实施上面提到的解决方案。但是,在研究多表继承时,我发现这实际上是一个无法运行的。

多表继承将创建一个隐式OneToOne _ptr字段,该字段将触发级联删除行为,导致删除B实例时删除我的arche类型模型。

我开始实现两个模型PrototypeB和B,它们完美无缺。