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

Вернуться на верх