Django:object_set vs filter

时间:2015-10-16 20:45:42

标签: django django-models

请考虑以下事项:

我有一个使用品牌作为外键的图像模型。

brand = Brand.objects.get(id = whatever)

我可以通过以下任何一种方式检索与该模型相关的所有图像:

images = Image.objects.filter(brand = brand)

images = brand.image_set.all()

从性能的角度来看,哪一种更快?

1 个答案:

答案 0 :(得分:5)

不会有任何性能差异。在这两种情况下,生成的SQL查询都是相同的。

因此,您选择哪一个是品味问题。就个人而言,我更喜欢

Images = Image.objects.filter(brand=brand)

因为很清楚你要返回一个图像查询集。

然而,你可以争辩说

images = brand.image_set.all()

更安全,因为品牌过滤是自动的,而另一方面您可能忘记过滤brand=brand