按 django admin 中的自定义列表显示字段进行列表过滤
Posted
技术标签:
【中文标题】按 django admin 中的自定义列表显示字段进行列表过滤【英文标题】:list filter by custom list display field in django admin 【发布时间】:2015-12-17 18:24:21 【问题描述】:我有以下模型管理员。我在列表视图中显示自定义字段。
class CustomerAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email', 'state')
search_fields = ('first_name', 'last_name', 'email')
list_filter = ('state',)
def state(self, obj):
address = Address.objects.filter(owner=obj.id)
if address:
return address.state
return None
我在上面尝试过,但它给出了一个错误“list_filter[0]”指的是“状态”,它不是指一个字段。” 所以我想按状态过滤记录。那么我如何在 django 1.5 中做到这一点呢?
【问题讨论】:
【参考方案1】:class CustomerAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email', 'state')
list_filter = ('state',)
search_fields = ('first_name', 'last_name', 'email')
def state(self, obj):
address = Address.objects.filter(owner=obj.id)
if address:
return address.state
return None
如果你想过滤,你应该包括 list_filter
【讨论】:
这不适用于自定义字段。它给出了一个错误 CustomerAdmin.list_filter[0]' 指的是不引用字段的“状态”。因为 state 不是 Customer 模型中的一个字段,Address 模型和 Customer 模型之间也没有关系。以上是关于按 django admin 中的自定义列表显示字段进行列表过滤的主要内容,如果未能解决你的问题,请参考以下文章
Django 1.3 或更低版本的 Django Admin 中的自定义过滤器