首页 > 解决方案 > Django:list_display 接受字段但不接受 list_filter

问题描述

我有以下管理类:

class AppointmentAdmin(admin.ModelAdmin):

    list_display = ('branch', 'date', 'timeslot', 'sold_to', 'unit', 'VIN')
    list_filter = ('branch', 'date', 'sold_to', 'unit', 'VIN')

    def VIN(self, obj):
        return obj.unit.vin

我收到以下错误:

<class 'catalog.admin.AppointmentAdmin'>: (admin.E116) The value of 'list_filter[4]' refers to 'VIN', which does not refer to a Field.

如果我从 list_filter 中删除 VIN,它执行得很好。list_display显示字段 VIN。

我究竟做错了什么?

标签: pythondjangoclassadmin

解决方案


列表过滤器不支持 ModelAdmin 方法。

要根据您的 VIN 方法过滤 vin,您需要在 list_filter 中包含 unit__vin。

https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter


推荐阅读