ForeignKey与抽象类的关系

riz*_*tas 5 django django-models python-3.x

我是这样的:

class F(models.Model):
    class Meta:
        abstract = True

class C1(F):
class C2(F):

class D(F):
        pid = models.ForeignKey(Cx)
Run Code Online (Sandbox Code Playgroud)

其中Cx可以是C1或C2,但我不知道它是怎么做的.

任何人都可以引导我吗?谢谢

Python 3.3 Django 1.7

小智 2

您所要求的不可能直接实现,您不能拥有抽象模型的外键,因为抽象模型没有可链接到的数据库表。

您可以做两件事之一。要么创建F一个具体的类,这有一些缺点,但这是一个不错的方法。

class F(models.Model):
    pass

class C1(F):
    pass
class C2(F):
    pass

class D(F):
        pid = models.ForeignKey(F)
Run Code Online (Sandbox Code Playgroud)

或者使用GenericforeignKey稍微复杂一点的 a,特别是当您需要限制模型的选择时。