我有一个模型我通过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
感谢您的帮助或想法!
答案 0 :(得分:4)
您缺少逗号:
list_filter = ('parent',)
没有逗号,括号将被忽略,django将迭代字符串,而不是元组(因为没有元组!),因此尝试访问字段p
。
来自docs:
通过使用逗号跟随值来构造具有一个项目的元组(仅在括号中包含单个值是不够的)。丑陋但有效。