You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中带过滤条件统计反向多对多字段计数的问题

解决指定封禁模式下的用户被操作次数统计问题

问题原因

你的查询失效是因为反向关联Action时用错了关联名称。Action模型里user_list字段的related_name设为了"user_list",所以从CustomUser反向关联Action记录时,必须用这个指定的名称,而非默认的action。

正确查询代码

修正过滤条件中的关联路径即可实现需求:

CustomUser.objects.annotate(
    banned_by_count=Count(
        'user_list',
        distinct=False,
        filter=Q(user_list__ban_mode__ban_mode="BAN")
    )
)

关键说明

  • user_list是CustomUser反向关联Action的唯一合法名称,通过它能关联到所有包含当前用户的封禁操作记录。
  • distinct=False保证同一发起者的多次操作都会被统计,满足你"操作发起者不做去重"的要求。
  • 过滤条件精准匹配ban_mode为"BAN"的操作,只统计这类场景下的操作次数。

内容的提问来源于stack exchange,提问作者h_enes_simsek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:47:13