1

我有一个UserProfile带有OneToOneFieldto的模型auth.models.User。我也有一个Image带有ForeignKeyto的模型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
4

2 回答 2

1

使用image.user.userprofile就可以了。此外,get_profile()已弃用。

于 2013-10-06T09:48:29.043 回答
0

尝试使用

userprofile = image.user__userprofile
于 2013-10-06T09:10:04.343 回答