Django restframework generics.ListCreateAPIView返回类似列表的对象
我必须这样做Django restframework generics.ListCreateAPIView返回类似列表的对象,django,django-rest-framework,Django,Django Rest Framework,我必须这样做 class UserProfileView(generics.ListCreateAPIView): permission_classes = ( permissions.IsAuthenticated, ) serializer_class = UserProfileSerializer def list(self,request): queryset = UserProfile.objects.filter(user=r
class UserProfileView(generics.ListCreateAPIView):
permission_classes = (
permissions.IsAuthenticated,
)
serializer_class = UserProfileSerializer
def list(self,request):
queryset = UserProfile.objects.filter(user=request.user.id)
serializer = UserProfileSerializer(queryset, many=True)
return Response(serializer.data)
{
"id": 1,
"firstname": "exp",
"lastname": "exp",
}
我想这样,我怎么能这样做,我不知道为什么它会像对象一样返回列表,我怎么能解决这个问题
[
{
"id": 1,
"firstname": "exp",
"lastname": "exp"
}
]
ListCreateAPIView
用于返回对象列表
像这样的表现
class UserProfileView(generics.ListCreateAPIView):
permission_classes = (
permissions.IsAuthenticated,
)
serializer_class = UserProfileSerializer
def list(self,request):
queryset = UserProfile.objects.filter(user=request.user.id)
serializer = UserProfileSerializer(queryset, many=True)
return Response(serializer.data)
{
"id": 1,
"firstname": "exp",
"lastname": "exp",
}
表示您需要一个对象,而不是对象列表,这意味着您需要使用
没有RetrieveCreateAPIView
,但您可以轻松地使用
像这样
{
"id": 1,
"firstname": "exp",
"lastname": "exp",
}
更新
您需要重载
get_object
方法,默认情况下get_object
将查找传递的url参数,并尝试从提供的查询列表中获取对象。这样做是为了使CRUDL通用。之后,从get\u对象
返回的值用于实例化serializer\u类
。但在您的情况下,只需在请求中返回当前用户即可。请参阅更新的答案。如果您查找retrieve
methodrelasiation,则可以理解所有这些信息。对于开发人员来说,了解如何读取源代码是一项基本技能。返回的结果是一个常规模型模式,就我而言…列表是检索多个记录,检索是针对单个记录-它们有单独的方法:get_object()@Jerzyk你能给我一些示例如何做到这一点吗!!!!!!