【发布时间】:2011-06-24 19:15:19
【问题描述】:
使用来自https://docs.djangoproject.com/en/dev/topics/db/queries/的示例模型
我想做如下的事情:
q = Entry.objects.filter(...)
entries = q.all().order_by('pub_date')
blog_counts = q.values('blog__name').annotate(Count('blog'))
这给了我如下结果:
[{'blog__count': 3, 'blog__name': u'Cheddar Talk'}, {'blog__count': 5, 'blog__name': u'Beatles Blog'}]
如果 Entry.blog ForeignKey 设置为“null=True,blank=True”,并且我为博客创建了几个具有 null 值的 Entry 记录,我会得到如下信息:
[{'blog__count: 0, 'blog__name': None}, {'blog__count': 3, 'blog__name': u'Cheddar Talk'}, {'blog__count': 5, 'blog__name': u'Beatles Blog'}]
我希望获得没有关联博客的实际条目数,而不是 0。查看执行的 SQL,我发现它正在执行 COUNT(blog.id) 而不是 COUNT(@987654327 @.blog_id),但更改为 .annotate(Count('blog_id')) 给了我:
FieldError: Cannot resolve keyword 'blog_id' into field.
在没有相关博客的情况下,我如何才能获得准确的条目计数?
【问题讨论】:
标签: django