【发布时间】:2017-10-04 17:58:35
【问题描述】:
假设我在 Django 中有三个模型
用户
- 姓名
- 用户名
狗
- 姓名
- 所有者外键(用户)
猫
- 姓名
- 所有者外键(用户)
现在我的问题是 -
用 django orm 数一数有多少主人养了猫狗?或拥有狗和猫的业主总数。
会是什么样的加盟?
【问题讨论】:
标签: django django-models django-orm
假设我在 Django 中有三个模型
用户
狗
猫
现在我的问题是 -
用 django orm 数一数有多少主人养了猫狗?或拥有狗和猫的业主总数。
会是什么样的加盟?
【问题讨论】:
标签: django django-models django-orm
您必须使用annotate 计算每个用户的狗和猫数量,然后过滤该数字大于 0 的位置。
from django.db.models import Count
User.objects.annotate(
has_dog=Count('dog'),
has_cat=Count('cat')
).filter(
has_dog__gt=0,
has_cat__gt=0
).count()
【讨论】:
order_by() 也很重要,因为模型可能具有默认排序。