MultiValueDictKeyError |返回到Django Rest Framework中的响应之前在修改值时创建和更新时出错

时间:2019-07-03 04:35:43

标签: django serialization django-rest-framework

我有一个由电影名称组成的“电影”模型。我想向用户返回一个修改后的值,而不是数据库。 例如。如果数据库中的电影名称为Godfather,我想将其返回到You must watch Godfather

我尝试使用SerializerMethodField,它可以为我提供正确的输出,但是当我尝试创建或更新新的电影字段时,会出现以下错误。

MultiValueDictKeyError

模型

# models.py
from django.db import models


class Movie(models.Model):
    name = models.CharField(max_length=255, blank=False, )
    date_created = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateField(auto_now=True)

序列化器

# serializers.py
from rest_framework import serializers
from .models import Movie


class MovieSerializer(serializers.ModelSerializer):

    name = serializers.SerializerMethodField()

    def get_name(self, obj):
        return getSomeString(obj.name)

    class Meta:
        model = Movie
        fields = ('id', 'name', 'date_created', 'date_modified')
        read_only_fields = ('date_created', 'date_modified')


def getSomeString(string):
    return "You must wqatch " + string

观看次数

# views.py
from django.shortcuts import get_object_or_404
from rest_framework import generics

from .models import Movie
from .serializers import MovieSerializer


class CreateView(generics.ListCreateAPIView):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer


class DetailView(generics.RetrieveUpdateDestroyAPIView):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer

    def get_object(self):
        return get_object_or_404(
            self.get_queryset(),
            pk=self.kwargs.get('pk')
        )

0 个答案:

没有答案