python - 如何按 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 个版本。我怎样才能做到这一点?
解决方案
您可以像这样使用带注释的反比关系:
from django.db.models import Count
top_3 = Edition.objects.annotate(nb_books=Count('book')).order_by('nb_books')[:2]
更多信息在这里
推荐阅读
- vim - 使 gf 匹配 python 导入
- python - 使附近的像素变白opencv
- json - 使用 Alamofire swift3 调用带有 HTTP 标头和正文的 Get API
- angular - 组件之间的角度事件
- arduino - at 命令在 sim800L 和 arduino uno 上没有响应
- java - 如何忽略 Okhttp 中的 SSL 错误?
- javascript - 在提交时使用javascript将值插入数据库
- swift - AVAssetWriter 到多个文件
- android - 包名可以包含阿拉伯文字吗?
- regex - 如何在bash中查找后跟已知字符串的行