1

toを持つUserProfileモデルがあります。to を持つモデルもあります。OneToOneFieldauth.models.UserImageForeignKeyUser

私の見解の 1 つで、次Imageのような s の束が得られます。

Image.objects.select_related('user__userprofile')

その後、上記で取得した各画像に対して、次のことを行います。

userprofile = image.user.get_profile()

これが別のデータベース ヒットを引き起こさないことを期待していましたが、そうです。私は何を間違っていますか?

実行される SQL で.selecte_related()a を確認できるため、 が実際にその仕事をしていると思うことに注意してください。LEFT OUTER JOIN

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 に答える