@s1vemod

Как фильтровать по полю из queryset?

Кастомизирую django-admin, таким образом:

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    search_fields = ['name',  'id']
    list_filter = ('is_active',  'availability')
    
    list_display = ['availability']
    readonly_fields = ['availability']

    def get_queryset(self, request):
        queryset = super(ProductAdmin, self).get_queryset(request)
        return queryset.annotate(availability=Case(
            When(quantity__gt=0, then=True),
            default=False
        ))
    
    def availability(self, obj):
        return 'Да' if obj.availability else 'Нет'
    availability.short_description = 'В наличие'


Когда я добавляю поле availability в list_filter , Django даёт ошибку:
<class 'shop.admin.ProductAdmin'>: (admin.E116) The value of 'list_filter[1]' refers to 'availability', which does not refer to a Field.


Пытался добавлять данное поле в fields, но ошибка остаётся.

Подскажите, как это можно исправить?
Заранее благодарю.
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы