我对使用group by子句的查询有疑问。 让我们假设我有以下Django-Model:
class SomeModel(models.Model):
date = models.DateField()
value = models.FloatField()
relation = models.ForeignKey('OtherModel')
如果我想进行查询,我通过OtherModel对SomeModel实例进行分组并注释最新日期:
SomeModel.objects.values('relation').annotate(Max('date'))
这一切都很棒,但只要我想在已注释的查询集上添加过滤器,我就无处可去:
SomeModel.objects.values('relation').annotate(Max('date')).filter(value__gt=0)
这确实会过滤掉所有值!= 0,但是我只想在注释发生后才想要它。如果关系的最新日期值为0,我希望将其过滤掉!
答案 0 :(得分:0)
您需要在注释字段中添加值,然后您可以对其进行过滤。您的ORM查询变为
SomeModel.objects.values('relation').annotate(Max('date'), value=F('value')).filter(value__gt=0)
这应该给出你需要的价值