对于我的一个模型,我有以下概念设计。
class A(models.Model):
...
class B(A): #Inherits A
fieldA = ...
fieldB = ...
class C(A): #Inherits A
fieldC = ...
fieldD = ...
class D(models.Model):
field = models.ForeignKey(A) #Here lies the problem, should store B or C
鉴于上述模型,我想在 D 中存储 B 或 C 的外键,但不能同时存储两者。
我尝试将 A 的 Meta 类属性设置为抽象,但这不允许 ForeignKey 与 A 的关系。我不希望有一个不是 B 或 C 的 A 实例,但如有必要,我可以限制这一点保存信号的行为。
是否有更简单的设计可以让我从所有类都继承自公共基础的类型列表中存储外键?