Class 没有名为 'p' 的字段

Class has no field named 'p'

我在 wagtail_hooks.py 中有以下模型 class 和 list_filter,当我创建 "Spieler" 时出现此错误

这是我的回溯 http://dpaste.com/3A5QAH0

#models.py
POSITIONS_SP = (
    ('th', 'TH'),
    ('st', 'ST'),
    ('vt', 'VT'))
POSITIONS_SP_LOOKUP = dict(POSITIONS_SP)

class Spieler(models.Model):
    name = models.CharField(max_length=128)
    vorname = models.CharField(max_length=128)
    position = models.CharField(max_length=128, choices=POSITIONS_SP)

    panels = [
        FieldPanel('name', classname="col6"),
        FieldPanel('vorname', classname="col6"),
        FieldPanel('position', classname="col4"),
    ]

#wagtail_hooks.py
class SpielerModelAdmin(ModelAdmin):
    model = Spieler
    menu_label = 'Spieler'
    menu_icon = 'group'
    list_display = ('name', 'vorname', 'position')
    search_fields = ('name', 'vorname')
    list_filter = ('position')

当我删除 list_filter 时一切正常。

当您的元组中只有一项时,您需要添加一个尾随逗号:

list_filter = ('position',)

否则,Python 会将括号解释为 "evaluate this first" 的含义(正如您在计算 (2 + 2) * 3 时所用的那样),给出结果 'position',并且将尝试将该字符串解释为列表 - 因此它最终会遍历 'position'.

中的每个字符

或者,您可以使用列表表示法使其明确:

list_filter = ['position']