Serialization self.context中的django rest框架密钥错误请求

Serialization self.context中的django rest框架密钥错误请求,serialization,django-rest-framework,Serialization,Django Rest Framework,即使我将请求传递给序列化程序,我也会收到密钥错误请求。 我的代码如下所示: 我也尝试过self.context.get('request'),但也不起作用。 我想通过视图将agentId设置为当前user.id,而不是通过api呈现的html表单手动获取它 序列化程序.py class LoanAgentSerializer(serializers.ModelSerializer): agentId = serializers.SerializerMethodField() c

即使我将请求传递给序列化程序,我也会收到密钥错误请求。 我的代码如下所示: 我也尝试过
self.context.get('request')
,但也不起作用。 我想通过视图将
agentId
设置为当前
user.id
,而不是通过api呈现的html表单手动获取它

序列化程序.py

class LoanAgentSerializer(serializers.ModelSerializer):
    agentId = serializers.SerializerMethodField()

    class Meta:
        model = Loan
        fields='__all__'
        read_only_fields=['agentId','state']
    
    def get_agentId(self,obj):
        agentId = self.context["request"].user.id
        return agentId
views.py

class AgentLoanView(APIView):
    permission_classes=(IsAuthenticated,)
    serializer_class=LoanAgentSerializer
    def post(self,request):
            user=request.user
            if user.role==2:
                serializer=self.serializer_class(data=request.data,context={'request':request})
                valid=serializer.is_valid(raise_exception=True)

                if valid:
                    serializer.save()
                    status_code=status.HTTP_200_OK
                    response = {
                    'success': True,
                    'status_code': status_code,
                    'message': 'Successfully created loan request',
                    'loan': serializer.data,
                    
                    

                }
                    return Response(response,status=status_code)
            return Response(status=status.HTTP_401_UNAUTHORIZED)

models.py

class Loan(models.Model):
    STATES=[
        ('New', 'New'),
        ('Approved', 'Approved'),
        ('Rejected', 'Rejected'),

    ]
    customerId=models.ForeignKey(User,on_delete=models.CASCADE,related_name='customer')
    agentId=models.ForeignKey(User,on_delete=models.CASCADE,related_name='agent')
    state=models.CharField(max_length=10,choices=STATES,default='New')
    amount_required = models.IntegerField()
    tenure=models.IntegerField()
    interest=models.FloatField()
内部服务器错误:/loanManagement/auth/agent/loan
回溯(最近一次呼叫最后一次):
文件“D:\projects\loan\venv\lib\site packages\django\core\handlers\exception.py”,第47行,在内部
响应=获取响应(请求)
文件“D:\projects\loan\venv\lib\site packages\django\core\handlers\base.py”,第179行,在\u get\u响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“D:\projects\loan\venv\lib\site packages\django\views\decorators\csrf.py”,第54行,在包装视图中
返回视图函数(*args,**kwargs)
文件“D:\projects\loan\venv\lib\site packages\django\views\generic\base.py”,第70行,在视图中
返回自调度(请求,*args,**kwargs)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第509行,已发送
响应=自身处理异常(exc)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第469行,在handle\u exception中
自举未捕获异常(exc)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第480行,位于raise\u uncaught\u异常中
加薪
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第506行,已发送
响应=处理程序(请求、*args、**kwargs)
get中第178行的文件“D:\projects\loan\loanManagement\views.py”
“贷款”:serializer.data,
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第745行,在数据中
ret=super().data
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第246行,在数据中
self.\u data=self.to\u表示(self.instance)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第663行,以to\U表示
返回[
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第664行,在
iterable中项的self.child.to_表示(项)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第515行,以to\U表示
ret[field.field\u name]=field.to\u表示(属性)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\fields.py”,第1870行,以to\u表示
返回方法(值)
get\U agentId中第88行的文件“D:\projects\loan\loanManagement\serializers.py”
agentId=self.context[“请求”].user.id
KeyError:“请求”
Internal Server Error: /loanManagement/auth/agent/loan
Traceback (most recent call last):
  File "D:\projects\loan\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "D:\projects\loan\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\projects\loan\venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "D:\projects\loan\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "D:\projects\loan\loanManagement\views.py", line 178, in get
    'loans': serializer.data,
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 745, in data
    ret = super().data
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 246, in data
    self._data = self.to_representation(self.instance)
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 663, in to_representation
    return [
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 664, in <listcomp>
    self.child.to_representation(item) for item in iterable
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 515, in to_representation
    ret[field.field_name] = field.to_representation(attribute)
  File "D:\projects\loan\venv\lib\site-packages\rest_framework\fields.py", line 1870, in to_representation
    return method(value)
  File "D:\projects\loan\loanManagement\serializers.py", line 88, in get_agentId
    agentId = self.context["request"].user.id
KeyError: 'request'