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

Django:如何获取创建Combination模型的用户列表/查询集

获取创建过Combination的用户查询集/列表

嗨,这个问题在Django里有两种实用的解决思路,看你需求选就行:

方法一:利用反向关联+去重

因为你的Combination模型里给changed_by设置了related_name='combinations',所以可以直接通过用户模型的反向关联来筛选,再用distinct()去重(毕竟一个用户可能创建多个Combination实例):

# 获取查询集
users_with_combinations = User.objects.filter(combinations__isnull=False).distinct()

# 如果需要转成列表的话
user_list = list(users_with_combinations)

这个方法简单直接,适合数据量不大的场景。

方法二:用Exists子查询(更高效)

如果你的数据量比较大,推荐用Exists子查询的方式,它比上面的方法性能更好,而且不需要额外去重:

from django.db.models import Exists, OuterRef

# 先给用户模型添加一个临时字段标记是否有创建过Combination
users_with_combinations = User.objects.annotate(
    has_created_combination=Exists(
        Combination.objects.filter(changed_by=OuterRef('pk'))
    )
).filter(has_created_combination=True)

# 转列表同样用list()
user_list = list(users_with_combinations)

这种方式数据库只会执行一次高效的子查询,不会返回重复的用户数据,适合大规模数据场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:18:27