Django休息框架:在创建Http POST请求时'create()'NotImplementedError

Mut*_*thm 5 django http django-rest-framework

在Django中发出post请求时,我得到错误,当我确实在我的序列化文件中实现它时,'create()'尚未实现

from rest_framework import serializers
from people.models import People

class PeopleSerializer(serializers.Serializer):
    pk = serializers.IntegerField(read_only=True)
    name = serializers.CharField(max_length=200)
    favoriteCity = serializers.CharField(max_length=200)

    def create(self, validated_data):
        return People.objects.create(**validated_data)

    def update(self, instance, validated_data):
        instance.name = validated_data.get('name', instance.name)
        instance.favoriteCity = validated_data.get(
                                'favoriteCity',instance.favoriteCity)
        instance.save()
        return instance()
Run Code Online (Sandbox Code Playgroud)

显然,create方法已经实现,我不明白为什么我会得到一个NotImplementedError

dus*_*917 15

在您的序列化程序类中继承自ModelSerializer而不是Serializer类,因为后者不会隐式调用create()方法.

class PeopleSerializer(serializers.ModelSerializer): 
Run Code Online (Sandbox Code Playgroud)

上述改变可以帮到你的工作!