Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Django条件计数_Mysql_Django_Annotations - Fatal编程技术网

Mysql Django条件计数

Mysql Django条件计数,mysql,django,annotations,Mysql,Django,Annotations,我正在查询标记为“可见”的所有标记的名称: 我想添加一个名为“action_count”的字段,它告诉我有多少个操作与此标记关联: visible_tags = Tag.objects.filter(visible=True,taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action)).order_by('name').annotate(action_count=Count('action'))

我正在查询标记为“可见”的所有标记的名称:

我想添加一个名为“action_count”的字段,它告诉我有多少个操作与此标记关联:

visible_tags = Tag.objects.filter(visible=True,taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action)).order_by('name').annotate(action_count=Count('action'))
这是可行的,只是我不想知道现在有多少动作是关联的,而是想知道有多少不完整的动作与这个标签关联

我尝试了以下方法:

visible_tags = Tag.objects.filter(visible=True,taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action)).order_by('name').filter(action__complete=False).annotate(action_count=Count('action'))

但这并不是我所需要的如何对未完成操作的计数进行注释?

您可能会得到比预期更多的计数。这是因为chained
.filter
引入了额外的内部联接,与问题非常相似 因此,将第二个过滤器放在第一个过滤器中:

visible_tags = Tag.objects.filter(visible=True, taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action), 
action__complete=False # Here
).order_by('name').annotate(action_count=Count('action'))

此外,
打印queryset.query
以了解SQL Django为您生成的内容。

您可能会得到比预期更多的计数。这是因为chained
.filter
引入了额外的内部联接,与问题非常相似 因此,将第二个过滤器放在第一个过滤器中:

visible_tags = Tag.objects.filter(visible=True, taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action), 
action__complete=False # Here
).order_by('name').annotate(action_count=Count('action'))

此外,
打印queryset.query
以了解SQL Django为您生成的内容。

看起来应该可以。它给了你什么?它与你的期望有什么不同?看起来它应该会起作用。它给了你什么?它与你的期望有什么不同?