Django过滤器计数注释

时间:2016-02-14 15:52:02

标签: python django orm

我有一个非常常见的用例,我需要计算一些行并将结果注释到由模型信息本身分组的基本模型。

MyModel.objects
    .filter(name='xyz')
    .values('id', 'name')
    .annotate(count=Count('relation__nested_relation', distinct=True))

现在我不想计算嵌套关系中的每个对象,但需要在特定的时间内计算对象。

MyModel.objects
    .filter(name='xyz', relation__nested_relation__time__gt=mytime)
    .values('id', 'name')
    .annotate(count=Count('relation__nested_relation', distinct=True))

此时,MyModel的每个nested_relation实例都不会包含MyModel的记录。相反,我想要每个count=0记录但注释nested_relation

在SQL中,我会在联接的 ON子句中附加Count(When(relation__nested_relation__time__gt=mytime, then=1), distinct=True)的过滤器。但似乎django不支持修改on子句。我有什么其他想法可以过滤我的计数声明?我的数据库后端是PostgreSQL,INSERT INTO webpage_point (webpage_id, point_ip) SELECT webpage_id, '$ip' FROM s_w WHERE s_w_id=? LIMIT 1" 引发了SQL语法异常。

0 个答案:

没有答案