Используйте много-много связанных полей для сортировки списка - PullRequest
0 голосов
/ 09 октября 2018

Мне удалось получить счетчик моего связанного поля «многие ко многим» в представлении списка, но я не могу использовать его для сортировки списка.

class GuestAdmin(admin.ModelAdmin):
    inlines = (GuestEpisodeAdmin, TopicGuestAdmin, JobGuestAdmin)
    exclude = ('episodes', )
    list_display = ('name', 'twitter', 'gender', 'medium', 'episode_count')

    def episode_count(self, obj):
        return obj.episodes.all().count()

Я видел, что подобные вещи былисделано с пользовательскими наборами запросов, но я понятия не имею, как получить мой счет в этом.Я даже не уверен, является ли способ, которым я делаю счет, лучшим способом сделать это.

1 Ответ

0 голосов
/ 09 октября 2018

После еще нескольких попыток я обнаружил это сам.

, используя метод get_queryset, я смог аннотировать количество эпизодов

def get_queryset(self, request):
    qs = super(GuestAdmin, self).get_queryset(request)
    return qs.annotate(episode_count=Count('episodes'))

и затем использовать его для сортировки

appearance_count.admin_order_field = 'episode_count'
...