Django聚合ForeignKey层次结构

问题描述

假设我有模型FooBarFooBarBar具有对Foo的ForeignKey引用。 FooBar具有对Bar的ForeignKey引用。给定一个Foo对象,我如何最有效地收集所有相关的FooBar对象?我不喜欢这样:

foobars = []
for bar in foo.bar_set.all():
    for foobar in bar.foobar_set.all():
        foobars.append(foobar)

解决方法

只需通过扩展关系即可

foobars = FooBar.object.filter(bar__foo=foo)