Django:object_set vs filter

DGD*_*GDD 4 django django-models

考虑以下:

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

brand = Brand.objects.get(id = whatever)
Run Code Online (Sandbox Code Playgroud)

我可以使用以下任一方法检索与该模型关联的所有图像:

images = Image.objects.filter(brand = brand)
Run Code Online (Sandbox Code Playgroud)

要么

images = brand.image_set.all()
Run Code Online (Sandbox Code Playgroud)

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

Ala*_*air 5

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

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

Images = Image.objects.filter(brand=brand)
Run Code Online (Sandbox Code Playgroud)

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

但是,你可以争辩说

images = brand.image_set.all()
Run Code Online (Sandbox Code Playgroud)

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