在没有查找字段的情况下检索APIView?

时间:2017-09-28 12:20:54

标签: django django-rest-framework django-views

默认情况下,RetrieveAPIView或RetrieveUpdateAPIView需要lookup_field来检索模型。

但是在我的情况下,我想通过self.request.user检索我的模型。

这是views.py示例

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

我可以使用RetrieveAPIView 而不使用lookup_field 吗?

1 个答案:

答案 0 :(得分:10)

您需要覆盖get_object

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