Python Django rest框架如何向request.data添加附加数据
我正在使用DRF和令牌认证系统来处理API。每当我从客户端发送数据时,它都会发送三个必填字段中的两个:Python Django rest框架如何向request.data添加附加数据,python,django-rest-framework,django-serializer,Python,Django Rest Framework,Django Serializer,我正在使用DRF和令牌认证系统来处理API。每当我从客户端发送数据时,它都会发送三个必填字段中的两个:title和name。但是由创建的由后端的request.user提供 因此,我需要以下内容,这当然不能像预期的那样起作用: class DefaultViewSet(ViewSet.ModelViewSet): """ API端点 """ queryset=Default.objects.all().order_by('-updated_at')) serializer\u class=Def
title
和name
。但是由创建的由后端的request.user
提供
因此,我需要以下内容,这当然不能像预期的那样起作用:
class DefaultViewSet(ViewSet.ModelViewSet):
"""
API端点
"""
queryset=Default.objects.all().order_by('-updated_at'))
serializer\u class=DefaultSerializer
权限\u类=[权限.已验证]
filterset_字段=[“创建人”、“标题”、“名称”]
def创建(self、request、*args、**kwargs):
request.data['created_by']=request.user.id
super().create(请求、*args、**kwargs)
由于我无法更改request.data
对象,我应该完全重写create
方法。因此,没有简单的方法来做前面的事情,对吗?或者有?您应该重写perform\u create
方法,该方法调用序列化程序的save方法并发送其他关键字参数,如下所示:
def perform_create(自、序列化程序):
request=serializer.context['request']
serializer.save(创建人=request.user.id)
原来的方法是:
def perform_create(self, serializer):
serializer.save()
我只是在create()
函数中通过在文档中使用来处理它:
def创建(self、request、*args、**kwargs):
serializer=DefaultSerializer(data=request.data,context={'request':request})
如果不是序列化程序,则。\u是否有效()
返回响应(serializer.errors,状态=400)
serializer.save(由=request.user创建)
返回响应({
“数据”:serializer.data
})
它无法达到该方法。我猜这是因为perform\u create()
可以在通用视图中工作,但不能在视图集中工作……嗯,它应该。。。因为viewsets.ModelViewSet
类继承自mixin.CreateModelMixin
并且该类具有create
和perform\u create
方法。