Python类外键继承

时间:2013-08-13 08:00:20

标签: python inheritance django-models foreign-keys django-1.4

我想知道 - 是否可以继承这样的课程?

例如,我有2个抽象类:

    class Book(models.Model):
        name = models.TextField()

        class Meta:
            abstract = True

    class Page(models.Model)
        num = models.IntegerField()
        book = models.ForeignKey('Book')

        class Meta:
            abstract = True

所以 - 我想为这两个创建继承类,让它们成为 BigBook BigBookPage

但是,如果我这样做,python告诉我,我的FK字段不能与抽象模型有关系。而且我找不到在继承模型中重新定义FK的方法。所以我必须只在继承的模型中创建外键 - 而不是父母?

如果我有相同的模型方法,使用外键,在父模型中定义...我必须将它们移动到每个孩子 - 所以他们可以使用他们的外键?

1 个答案:

答案 0 :(得分:1)

听起来你想将Book标记为proxy = True。见proxy models。它将创建一个书模型,但也让你有其他继承它的模型,让你自定义子类的功能。

class Book(models.Model):
    class Meta:
        proxy = True

class BigBook(Book):
    # BigBook properties go here.