我特林一些这样的: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的多个实例相关。