Django 管理和元don';看不到父抽象类的字段

Django 管理和元don';看不到父抽象类的字段,django,python-3.x,inheritance,django-models,Django,Python 3.x,Inheritance,Django Models,我使用Django 1.10。我有以下模型结构: class GenericPage(models.Model): """Abstract page, other pages inherit from it.""" book = models.ForeignKey('Book', on_delete=models.CASCADE) class Meta: abstract = True class GenericColorPage(models.Mod

我使用Django 1.10。我有以下模型结构:

class GenericPage(models.Model):
    """Abstract page, other pages inherit from it."""
    book = models.ForeignKey('Book', on_delete=models.CASCADE)

    class Meta:
        abstract = True

class GenericColorPage(models.Model):
    """Abstract page that is sketchable and colorable, other pages inherit from it."""
    sketched = models.BooleanField(default=False)
    colored = models.BooleanField(default=False)

    class Meta:
        abstract = True

class GenericBookPage(GenericColorPage):
    """A normal book page, with a number. Needs to be storyboarded and edited."""

    ###
    #various additional fields
    ###

    class Meta:
        # unique_together = (('page_number', 'book'),) # impedes movement of pages
        ordering = ('-book', '-page_number',)
        abstract = True

    objects = BookPageManager()  # the manager for book pages

class BookPage(GenericBookPage):
    """Just a regular book page with text (that needs to be proofread)"""
    proofread = models.BooleanField(default=False)
此外,还有一段来自Admin的摘录:

class BookPageAdmin(admin.ModelAdmin):
    # fields NOT to show in Edit Page.
    list_display = ('__str__', 'page_name', 'sketched', 'colored', 'edited', 'proofread',)
    list_filter = ('book',)
    readonly_fields = ('page_number',)  # valid page number is assigned via overridden save() in model
    actions = ['delete_selected',]
我尝试执行
/manage.py makemigrations
,但如果出现以下错误:

<class 'progress.admin.BookPageAdmin'>: (admin.E116) The value of 'list_filter[0]' refers to 'book', which does not refer to a Field.
progress.BookPage: (models.E015) 'ordering' refers to the non-existent field 'book'.
:(admin.E116)“list\u filter[0]”的值指的是“book”,而不是指字段。
progress.BookPage:(models.E015)“ordering”指的是不存在的字段“book”。
过去,当我没有使用摘要,只是将所有内容放入
BookPage
模型中时,一切都很好。但是Meta和Admin似乎看不到父类中的字段。我错过什么了吗?有没有办法让他们读取抽象父母的字段

在过去,当我没有使用摘要,只是将所有内容放入BookPage模型时,一切都很好

当然,它工作得很好,因为您将所有内容都放在
BookPage
中,这不是一个表,这意味着将创建表(以及字段)

但是Meta和Admin似乎看不到父类中的字段。我错过什么了吗

您忽略了这样一个事实,即您的模型没有一个继承自
GenericPage
抽象模型。因此,永远不会创建
book
字段

有没有办法让他们读取抽象父母的字段

必须创建/修改从抽象模型继承的模型。也许可以这样做:

class GenericBookPage(GenericColorPage, GenericPage):

它允许您继承
GenericColorPage
GenericPage
字段。当我说inherit时,我的意思是运行
migrate
命令来实际创建数据库表和相关列(模型字段)。

噢,天哪,我犯了一个错误。它应该是
GenericColorPage(GenericPage):
!我几乎以为Django无法遍历抽象树,但一开始就没有抽象树。谢谢你指出!