Wagtail ModelAdmin与list_filter错误:FieldDoesNotExist:Region没有名为' p'

时间:2017-02-01 14:48:18

标签: python django django-models wagtail django-modeladmin

我有一个模型我通过Wagtail的modeladmin公开,直到我尝试应用包含ForeignKey的list_filter。我有一个名为Region的自引用模型(用于存储县,城市和城镇),我希望能够在Parent级别创建过滤器。

我在Django 1.10上运行Wagtail 1.8.1。这是模特:

class Region(models.Model):
    """
    Tree of regions and sub-regions.
    """

    name = models.CharField(max_length=255)
    parent = models.ForeignKey(
        'Region',
        blank=True,
        null=True,
    )

    class Meta:
        unique_together = ('name', 'parent')

    def __str__(self):
        return '{0}'.format(
            self.name,
        )

来自ModelAdmin的{​​{1}}:

wagtail_hooks.py

如果我在课程class RegionAdmin(ModelAdmin): model = Region menu_icon = 'doc-full-inverse' empty_value_display = 'ROOT' list_display = ('parent', 'name') list_filter = ('parent') modeladmin_register(RegionAdmin) 中注释掉list_filter行,它会正常工作。文档说它可以在列表中使用RegionAdmin。我错过了一些明显的东西吗堆栈跟踪在这里:

ForeignKey

感谢您的帮助或想法!

1 个答案:

答案 0 :(得分:4)

您缺少逗号:

list_filter = ('parent',)

没有逗号,括号将被忽略,django将迭代字符串,而不是元组(因为没有元组!),因此尝试访问字段p

来自docs

  

通过使用逗号跟随值来构造具有一个项目的元组(仅在括号中包含单个值是不够的)。丑陋但有效。