mysql - Django 查询集复杂查找

标签 mysql django

我希望使用 Django 查询集以最佳方式解决这个问题。

每个图书馆只能拥有一本书。 多个图书馆可以有同一本书的多个实例(即:Library1 可以有一个“Girl with the Dragon Tattoo”的实例,Library4 可以有另一个“Girl with the Dragon Tattoo”的实例)

Book(models.Model):
    name = models.CharField(max_length=30)

Library(models.Model):
    book = models.ForeignKey(Book)    # multiple libraries have the book
    city = models.CharField(max_length=50)

那么我如何找到一本在少于 3 个图书馆中的书呢?

最佳答案

使用注释计数

 Book.objects.annotate(n_libraries=Count('library')).filter(n_libraries__lt=3)

关于mysql - Django 查询集复杂查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14404787/

相关文章:

python - 如何使用python将树莓派连接到另一台PC的数据库

mysql - 连接同一张表中的两条sql语句

mysql - SQL SELECT 根据工作时间获取公司状态

python-3.x - Django 上的 MakeMigration 错误 - ImportError : cannot import name 'FieldDoesNotExist' from 'django.db.models'

javascript - 带有预定义标记的 Angular ng-repeat

django - 为什么我的 Django 单元测试不知道 MessageMiddleware 已安装?

python - 如何向基于 Django 类的通用 View 装饰器添加参数?

php - zend 框架 2.2 中的嵌套 where 子句

mysql - 创建函数时,在 SQL 中不断出现此错误。使固定?

python - 如何在 Django 中按 ManyToManyField 的 id 排序?