我有一个UserProfile
带有OneToOneField
to的模型auth.models.User
。我也有一个Image
带有ForeignKey
to的模型User
。
在我的一个观点中,我得到了一堆Image
这样的 s:
Image.objects.select_related('user__userprofile')
后来,对于上面提取的每张图片,我都会这样做:
userprofile = image.user.get_profile()
我原以为这不会导致另一个数据库命中,但确实如此。我究竟做错了什么?
请注意,我认为.selecte_related()
它实际上是在做它的工作,因为我可以LEFT OUTER JOIN
在被执行的 SQL 中看到 a:
SELECT * FROM "myapp_image"
INNER JOIN "auth_user" ON ("myapp_image"."user_id" = "auth_user"."id")
LEFT OUTER JOIN "myapp_userprofile" ON (
"auth_user"."id" = "myapp_userprofile"."user_id")
ORDER BY "myapp_image"."uploaded" DESC, "myapp_image"."id" DESC
LIMIT 64