请考虑以下事项:
我有一个使用品牌作为外键的图像模型。
brand = Brand.objects.get(id = whatever)
我可以通过以下任何一种方式检索与该模型相关的所有图像:
images = Image.objects.filter(brand = brand)
或
images = brand.image_set.all()
从性能的角度来看,哪一种更快?
答案 0 :(得分:5)
不会有任何性能差异。在这两种情况下,生成的SQL查询都是相同的。
因此,您选择哪一个是品味问题。就个人而言,我更喜欢
Images = Image.objects.filter(brand=brand)
因为很清楚你要返回一个图像查询集。
然而,你可以争辩说
images = brand.image_set.all()
更安全,因为品牌过滤是自动的,而另一方面您可能忘记过滤brand=brand
。