Фильтр Django Admin по возвращаемому значению пользовательской функции

Учитывая следующие модели:

  • Профиль
  • Книга
  • Кампания

Следующие отношения:

  • Профиль имеет много Книг
  • Книга может быть во многих кампаниях

Следующая модель Django Admin имеет пользовательскую функцию, которая получает все кампании, в которых находится книга:

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    @admin.display(description="Running Campaigns")
    def get_campaign_count(self, obj):
        book_campaigns_db_count = Campaign.objects.filter(asins__contains=[obj.asin]).count()
        return book_campaigns_db_count
    list_display = ["title","format","asin","get_campaign_count"]
    list_filter = ["profile__nickname", "format"]

Это упрощенная версия модели, но в ней есть все необходимые части для данного вопроса.

Примечание: база данных - PostgreSQL, а поле asins - ArrayField.

Вопрос:

Я хотел бы отфильтровать и показать только Книги, у которых >0 запущенных кампаний. Пожалуйста, посоветуйте, как этого добиться.

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