首页 > 解决方案 > 如何按 Django 的版本数过滤书籍?

问题描述

模型.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 个版本。我怎样才能做到这一点?

标签: pythondjango

解决方案


您可以像这样使用带注释的反比关系:

from django.db.models import Count

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

更多信息在这里


推荐阅读