Фильтр 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 запущенных кампаний. Пожалуйста, посоветуйте, как этого добиться.