Django型号xor&x27;独角兽

Django型号xor&x27;独角兽,django,django-models,Django,Django Models,我有以下Django模型场景: class A(models.Model) pass class B(models.Model) a = models.OneToOne(A) class C(models.Model) a = models.OneToOne(A) class D(models.Model) a = models.OneToOne(A) 有没有办法保证任何给定B、C或D对象的一个实例只指向单个a对象?例如,如果有一个B的实例指向A的实例,那

我有以下Django模型场景:

class A(models.Model)
    pass

class B(models.Model)
    a = models.OneToOne(A)

class C(models.Model)
    a = models.OneToOne(A)

class D(models.Model)
    a = models.OneToOne(A)

有没有办法保证任何给定B、C或D对象的一个实例只指向单个a对象?例如,如果有一个B的实例指向A的实例,那么其他任何对象都不能指向A的实例。

您将需要跳过一些环才能完成此操作


您可以在
B
C
上创建自定义
save
方法,和
D
加载您试图从DB指向的
A
的实例,并确保不存在其他模型的实例。

如果您可以控制模型定义,那么您可能会有一种更干净的方法来实现django的模型继承。