2017-09-28 2 views
2

デフォルトでは、RetrieveAPIViewまたはRetrieveUpdateAPIViewにはlookup_fieldが必要です。RetrieveAPIルックアップフィールドのないビュー?

私の場合は、self.request.userでモデルを取得したいと考えています。ここで

class ProfileRetrieveAndUpdateProfile(generics.RetrieveUpdateAPIView): 
    queryset = Profile.objects.all() 
    serializer_class = ProfileRetrieveAndUpdateSerializer 
    lookup_field = 'user_id' 

    def get_queryset(self): 
     qs = Profile.objects.all() 
     logged_in_user_profile = qs.filter(user=self.request.user) 
     return logged_in_user_profile 

私はlookup_fieldなしRetrieveAPIView 使用することはできviews.py例ですか?

+0

をオーバーライドする必要がありますか?私はドキュメントでそれを見つけられませんでした、そして、それは私のプロジェクトで気にします。 –

+0

このattrは 'GenericAPIView'にデフォルト値を持ち、getオブジェクトに使用されます。 –

+0

'lookup_field'を指定しなかった場合、このエラーが発生します。予想されるビュー" pk "というURLキーワード引数で呼び出される予定のProfilePageView。あなたのURL confを修正するか、ビューの '.lookup_field'属性を正しく設定してください。 –

答えて

3

あなたは `lookup_field`が必要であることを見つけるget_object

def get_object(self): 
    queryset = self.get_queryset() 
    obj = get_object_or_404(queryset, user=self.request.user) 
    return obj 
+0

素晴らしい!!!!!!! –

+0

大変ありがとうございます。X 1,000,000,000 –

+0

お手伝いします! –

関連する問題