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
相关产品推荐
相关产品推荐

