Questions tagged «django-aggregation»

5
如何在Django中过滤用于计数注释的对象?
考虑简单的Django模型Event和Participant: class Event(models.Model): title = models.CharField(max_length=100) class Participant(models.Model): event = models.ForeignKey(Event, db_index=True) is_paid = models.BooleanField(default=False, db_index=True) 使用参与者总数来注释事件查询很容易: events = Event.objects.all().annotate(participants=models.Count('participant')) 如何用筛选的参与者计数进行注释is_paid=True? 我需要查询所有事件,而与参与者人数无关,例如,我不需要按带注释的结果进行过滤。如果有0参与者,那没关系,我只需要带有0注释的值即可。 文档中的示例在这里不起作用,因为它从查询中排除了对象,而不是使用注释了对象0。 更新。Django 1.8具有新的条件表达式功能,因此我们现在可以这样做: events = Event.objects.all().annotate(paid_participants=models.Sum( models.Case( models.When(participant__is_paid=True, then=1), default=0, output_field=models.IntegerField() ))) 更新 2。Django 2.0具有新的条件聚合功能,请参阅下面的可接受答案。

7
Django:按日期分组(日,月,年)
我有一个像这样的简单模型: class Order(models.Model): created = model.DateTimeField(auto_now_add=True) total = models.IntegerField() # monetary value 我想输出按月细分: 一个月内有多少笔交易(COUNT) 合并值(SUM) 我不确定最好的攻击方法是什么。我已经看到了一些看上去很吓人的选择查询,但我的简单想法是告诉我,最好是迭代数字,从任意开始的年/月开始,一直计数到直到本月为止,然后简单地抛出查询该月的过滤条件。更多的数据库工作-减轻开发人员的压力! 什么对您最有意义?有什么好方法可以拉回快速数据表吗?还是我的肮脏方法可能是最好的主意? 我正在使用Django 1.3。不知道他们最近是否添加了更好的方法GROUP_BY。

2
如何使用Django进行分组和汇总
我想通过ORM进行一个非常简单的查询,但无法弄清楚。 我有三种模式: 位置(位置),属性(位置可能具有的属性)和评分(也包含得分字段的M2M“直通”模型) 我想选择一些重要的属性,并能够通过这些属性对我的位置进行排名-即,所有选定属性的总分更高=更好。 我可以使用以下SQL来获取所需的内容: select location_id, sum(score) from locations_rating where attribute_id in (1,2,3) group by location_id order by sum desc; 哪个返回 location_id | sum -------------+----- 21 | 12 3 | 11 我可以通过ORM得到的最接近的是: Rating.objects.filter( attribute__in=attributes).annotate( acount=Count('location')).aggregate(Sum('score')) 哪个返回 {'score__sum': 23} 即所有的总和,而不是按位置分组。 可以解决吗?我可以手动执行SQL,但宁愿通过ORM保持一致。 谢谢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.