【发布时间】:2015-09-03 05:10:29
【问题描述】:
我目前正在尝试为 Django 中的用户模型注释两个不同数量的喜欢。
这是我用来返回所需查询集的代码
def get_top_user(self):
return User.objects. \
annotate(guide_like=Count('guidelike')).\
annotate(news_like=Count('newslike')).\
values_list('first_name', 'last_name', 'guide_like','news_like').\
order_by('-guide_like')
但是,querySet 返回 ["Bob", "Miller", 612072, 612072]。如您所见,Django 获取两个注释值并将它们相乘,这就是我得到 612072 的原因。
有没有办法在一个查询集中调用多个注释而不获取这些相乘的值。
编辑:还尝试在查询末尾添加 distinct() 或在每个计数中添加 distinct=True,但调用只是进入无限循环。
【问题讨论】:
-
唯一的解决方案是添加 distinct=True 这不是一个好的做法,在我的情况下不起作用。
-
你能展示 GuideLike 和 NewsLike 模型吗?
-
另外,请分别显示 guide_like 和 news_like 注释调用的结果
-
@Jean-MichelProvencher 我实际上遇到了这个问题,
distinct解决了它。为什么你说这不是一个好习惯?
标签: python django count django-queryset annotate