我特林一些這樣的:ForeignKey的關係抽象類
class F(models.Model):
class Meta:
abstract = True
class C1(F):
class C2(F):
class D(F):
pid = models.ForeignKey(Cx)
其中Cx可能是C1或C2,但我不知道該怎麼做。
有人能帶我嗎? 感謝
的Python 3.3 的Django 1.7
我特林一些這樣的:ForeignKey的關係抽象類
class F(models.Model):
class Meta:
abstract = True
class C1(F):
class C2(F):
class D(F):
pid = models.ForeignKey(Cx)
其中Cx可能是C1或C2,但我不知道該怎麼做。
有人能帶我嗎? 感謝
的Python 3.3 的Django 1.7
你所要求是不可能的直接,你不能有一個ForeignKey到一個抽象的模型,抽象模型不具備數據庫錶鏈接。
你可以做兩件事情無論是。要麼讓F
成爲一個具體的課程,這有一些缺點,但它不是一個壞的路要走。
class F(models.Model):
pass
class C1(F):
pass
class C2(F):
pass
class D(F):
pid = models.ForeignKey(F)
或者使用GenericforeignKey
這是更復雜一點,特別是如果你需要限制模式的選擇。
正如在另一個回覆中提到的那樣,由於抽象類沒有表,所以不能與它們相關聯。
你可以,但是,模仿這種行爲有一個一對一的關係:
class F(models.Model):
pass # stuff here
class C1(models.Model):
f = models.OneToOneField(F)
class C2(models.Model):
f = models.OneToOneField(F)
class D(F):
pid = models.ForeignKeyField(F)
你必須手動查找,如果pid是C1或C2,但你永遠不會有這樣一個場景, F的單個實例與C1或C2的多個實例相關。