2015-10-16 72 views
3

请考虑以下内容:Django:object_set vs过滤器

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

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

我可以检索与该模型通过以下两种方式相关联的所有图片:

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

images = brand.image_set.all() 

从性能的角度来看,这其中的一个是更快?

回答

4

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

因此,你选择哪一个是品味的问题。我个人更喜欢

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

因为它非常清楚您正在返回图像的查询集。

然而,你可能会说,

images = brand.image_set.all() 

是安全的,因为品牌过滤是自动的,而在其他的方式,你可以忘记上brand=brand过滤。