假设我有三个模型绑定在一对多关系中,如下所示:
class Highest(Model):
pass
class Medium(Model):
higher = ForeignKey(Highest, on_delete=CASCADE)
class Lowest(Model):
higher = ForeignKey(Medium, on_delete_CASCADE)
现在,如果我有一个名为Highest
的{{1}}实例,我可以通过这种方式轻松获取所有相关highest
个对象:Medium
如果我有一个名为highest.medium_set.all()
Medium
的实例,我可以通过这种方式轻松获取所有相关medium
个对象:Lowest
但是如何获取与特定medium.lowest_set.all()
对象相关的任何Lowest
对象相关的所有Medium
个对象?
这不起作用:Highest
我总是可以这样做:highest.medium_set.lowest_set.all()
但这是唯一的方法吗?或者我可以更直接地做到这一点吗?也就是说,通过从Lowest.objects.filter(higher__higher=highest).distinct().all()
对象获取所有相关Lowest
个对象而不是过滤所有Highest
个对象?
答案 0 :(得分:0)
当您尝试执行highest.medium_set.lowest_set.all()
时,您尝试在查询集本身上调用queryset方法。这不会起作用,因为不知道哪个Medium实例要获取所有相关的最低对象。
这应该没问题:
Lowest.objects.filter(higher__higher=highest)