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.
Если я удалю VIN из list_filter, он выполняется нормально. Дисплей list_display будет показывать мне поле VIN.
Что я делаю не так?
Фильтр списка не поддерживает методы ModelAdmin.
Для фильтрации по vin на основе вашего метода VIN вам нужно иметь unit__vin в list_filter.
https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter