django - 如何获取 Django 模板中字段中具有特定值的所有对象的计数?
问题描述
我想获得False
对象字段的所有对象集的计数adult
。
我在模板中循环遍历“家庭”模型:
class Family(models.Model):
name = models.CharField(max_length=255)
class Person(models.Model):
family = models.ForeignKey(Family, on_delete=models.CASCADE, related_name='person', related_query_name='person')
adult = models.BooleanField()
这是我想在模板中实现的目标:
# views.py
families = Family.objects.all()
# index.html
{% for family in families %}
{{ family.name }} has {{ family.person(adult=False).count() }} non-adults!
{% endfor %}
解决方案
如果我对您的理解正确,我认为您的问题最好通过使用 django 注释来解决(有关详细信息,请参阅文档)。
在您看来,用成年人的数量来注释每个 Family 对象:
families = Family.objects.annotate(non_adults=Count('person', filter=Q(person__adult=False)))
然后你可以简单地在你的模板中使用这个注解
{% for family in families %}
{{ family.name }} has {{ family.non_adults }} non-adults!
{% endfor %}
使用注释,您可以利用数据库的功能,这通常比在 python 中查询和执行其他操作更有效。
推荐阅读
- javascript - 为什么我收到错误 data.findIndex is not a function in React with Redux 项目?
- python - Blit 功能不起作用,循环会很快吗?
- reactjs - 组件隐藏时的响应式网格布局空块
- php - 更改 HTML GET 属性格式
- javascript - 通过键合并对象并创建新的键名
- string - 如何用大写字母分隔字符串?
- python - 给定比率和范围时列出几何级数
- c# - 反向单词但点应该在最后
- python - 使用 Python 刷新 Tableau 仪表板
- typescript - 为 props 定义 mobx-react-lite 观察者泛型