首页 > 解决方案 > TypeError: perform_create() does not have 1 required positional argument'serializer' 我收到这样的错误

问题描述

视图.py

from rest_framework import viewsets, permissions, generics, serializers
from .serializers import PlayerSerializer
from .models import PlayerList
from rest_framework.response import Response

class PostPlayer(generics.ListCreateAPIView):
    queryset = PlayerList.objects.all().order_by('-d_code')
    serializer_class = PlayerListSerializer

    def perform_create(self, request, serializer):
        d_code = request.data.get('h_code') + 'test'
        #do something with d_code
        new_code = d_code + 'someSampleValue'
        serializer.save(d_code=new_code)

TypeError: perform_create() doesn't have 1 required positional argument'serializer' 我收到这样的错误。

知道为什么我会收到此错误吗?

让我知道我现在缺少什么。

这是 perform_create 的示例

标签: pythondjango

解决方案


改变你的perform_create(...)方法,

class PostPlayer(generics.ListCreateAPIView):
    queryset = PlayerList.objects.all().order_by('-d_code')
    serializer_class = PlayerListSerializer

    def perform_create(self, serializer):
        d_code = self.request.data.get('h_code') + 'test'
        # do something with d_code
        new_code = d_code + 'someSampleValue'
        serializer.save(d_code=new_code)

推荐阅读