Ale*_*lla 4 python django django-queryset
假设我有一个模型评论和另一个模型答案。我想查询所有评论,但还要在查询中包含每个评论的答案数量。我认为annotate()在这种情况下会很有用,但我只是不知道如何写下来。文档写道:
Django 1.8 中的新功能:以前版本的 Django 只允许将聚合函数用作注释。现在可以使用各种表达式来注释模型。
所以。这是我的模型的一个例子:
class Comments(models.Model):
...
class Answers(models.Model):
comment = models.ForeignKey(Comments)
Run Code Online (Sandbox Code Playgroud)
这是一个示例查询:
queryset = Comments.objects.all().annotate(...?)
Run Code Online (Sandbox Code Playgroud)
我不确定如何注释Count每个评论的答案。即有多少答案指向 FK 字段上的每个评论comment。甚至有可能吗?有没有更好的办法?只在 manager 上写一个方法会更好吗?
小智 8
你需要使用一个Count聚集:
from django.db.models import Count
comments = Comments.objects.annotate(num_answers=Count('answers'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |