對於我的某個模型,我有以下概念設計。Django模型 - 共享公共基類的不同對象類型的外鍵
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實例,但如果必要的,我可以用保存信號來限制這種行爲。
是否有一個更容易的設計,可以讓我從一個類型列表中存儲一個外鍵,其中所有類都從一個公共基類繼承而來?
你能想到在那裏你可以做一個抽象的情況,有一箇中介T接着B,C和d均來自T.繼承或者,也許從一個具體的延長A. B,C和d見本同樣的問題,這是有點舊http://stackoverflow.com/questions/1114767/django-model-inheritance-and-foreign-keys –