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

Django跨关联关系查询:我的产品过滤写法是否正确?

你的查询写法是否正确?

首先,从模型关联逻辑来看,你的过滤写法是正确的,只要你的模型关联是按如下方式正确设置的:

  • Product 模型有指向 Warehouse 的外键(比如 warehouse = models.ForeignKey(Warehouse, ...))
  • Warehouse 模型有指向 Store 的外键(比如 store = models.ForeignKey(Store, ...))
  • Store 模型有指向 User 的外键(比如 user = models.ForeignKey(User, ...))

这种双下划线跨表查询的写法,能准确筛选出当前用户所有店铺下所有仓库中的产品,排序逻辑也没问题。

不过有个需要注意的点:如果同一个产品存在于多个符合条件的仓库中,这个查询会返回重复的产品实例。如果要避免重复,可以在查询末尾加上.distinct():

def get_queryset(self):
    return Product.objects.filter(
        warehouse__store__user_id=self.request.user.pk
    ).order_by('-offer_id').distinct()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:35:29