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

含双ForeignKey的Model查询:获取特定用户关联的唯一Segment

获取指定用户关联的唯一Segment查询集

你可以直接从Segment模型出发,通过反向关联跨表过滤并去重,一步得到目标查询集,这比先获取ID列表再查询更高效:

user_id = 10
unique_segments = Segment.objects.filter(
    segmenteffort__activity__user=user_id
).distinct()

说明:

  • segmenteffort是Django自动生成的反向关联名称(对应SegmentEffort模型中指向Segment的外键),通过它可以跨表关联到SegmentEffort记录
  • 继续用双下划线__activity__user深入过滤到归属指定用户的Activity
  • distinct()用于确保每个Segment只返回一次,避免同一个Segment因关联多条符合条件的SegmentEffort而重复出现

如果你坚持用已有的ID列表方式,也可以通过in查询获取Segment查询集:

sids = SegmentEffort.objects.filter(activity__user=10).values_list('segment_id', flat=True).distinct()
unique_segments = Segment.objects.filter(id__in=sids)

但第一种方法只需要一次数据库查询,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:48:04