ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django:分组依据?

2019-12-10 06:56:42  阅读:202  来源: 互联网

标签:django-orm python django group-by


我正在寻找类似以下内容的东西:

previous_invoices = Invoice.objects.filter(is_open=False)
                                   .order_by('-created')
                                   .group_by('user')

但是group_by()不存在…

这将为每个用户找到最近关闭的发票.

这个aggregation API似乎可以让您对计数和总和进行类似的操作,但是我不需要计数或总和之类的东西,我实际上想要发票对象!

解决方法:

选项1:

尽管Django中不存在group_by(),但您可以尝试通过利用latest()方法和用户过滤器来为每个用户检索最近关闭的发票:

previous_invoices = Invoice.objects.filter(user=my_user, is_open=False)
                                   .latest('created') 

对于较旧的Django版本,则不存在Latest(),查询将如下所示:

previous_invoices = Invoice.objects.filter(user=my_user, is_open=False)
                                   .order_by('-created')[0]

选项2:

如果您绝对要创建group_by的效果,则可以手动创建一个,如此处接受的答案所示:Django GROUP BY field value.

  1. Use 07002 with flat=True to get a list of the existent values in your database (if you don’t know them beforehand). Also use .distinct() to elimintae duplicate values as we do not care for those:

    06002

  2. Now iterate through value_list and fill your dictionary:

    06003

Now group_by_value dictionary contains as keys the distinct values
in your interesting_field and as values the queryset objects, each
containing the entries of MyModel with interesting_field=a value
from value_list
.

注意:

该库django-group-by存在,它声称要在Django上添加您可能要检查的group_by().

标签:django-orm,python,django,group-by
来源: https://codeday.me/bug/20191210/2099950.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有