Как отфильтровать книги по количеству изданий Django?

models.py

class Category(models.Model):
    image = models.ImageField(upload_to='book_images/category_images')
    title = models.CharField('Назва', max_length=128)
    slug = models.CharField(blank=True, max_length=128)

class Book(models.Model):
    image = models.ImageField('Зображення', blank=False, upload_to='book_images')
    title = models.CharField('Назва', max_length=128)
    price = models.DecimalField('Ціна', max_digits=6, decimal_places=2)
    author = models.ForeignKey(Author, on_delete=CASCADE, verbose_name='Автор')
    edition = models.ForeignKey(Edition, on_delete=CASCADE, verbose_name='Видавництво')
    category = models.ForeignKey(Category, on_delete=CASCADE, verbose_name='Категорія')

Я хочу отобразить 3 лучших издания по количеству их книг. Как я могу это сделать?

Вы можете использовать обратное отношение с аннотацией следующим образом :

from django.db.models import Count

top_3 = Edition.objects.annotate(nb_books=Count('book')).order_by('nb_books')[:2]

Больше информации здесь

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