2009-12-01 11 views

答えて

36

user.detailsにアクセスすると、UserDetail.user外部キーの逆参照にアクセスします。外部キー自体はUserにはUserDetailしかないと指定していないので、djangoはRelatedManagerを提供します。これは通常のManagerのようにフィルタリングしてクエリできます。だからあなたはあなたが.objectsのマネージャに行うことと同じことをします。 user.details.all()user.details.filter()user.details.get()などを求めることができます。これは、メソッドと結果に応じてクエリーセット、オブジェクト、または例外を提供します。

+1

ああ!それは今よりずっと意味をなさない。 * User *にはUserDetailが1つしかないことは明白でしたが、どこにも指定されていないと思います。ありがとうございました。 – mpen

+8

ForeignKeyを使用する代わりにOneToOneFieldを使用するようにモデルを変更した場合、期待どおりに行うことができます。 OneToOneFieldsはForeignKeysと似ていますが、Djangoは関連するオブジェクトが1つしかないため、関連するマネージャーではなくオブジェクトに直接アクセスできます。 https://docs.djangoproject.com/ja/dev/ref/models/fields/#onetoonefieldを参照してください。 – mbargiel

8

これは、UserDetailオブジェクトがすでにそのユーザのために存在すると仮定しそうget()は、例外が発生します

request.user.details.get().favourites.add(article) 

を試してみてください。

関連する問題