У меня есть модель «Фильм», состоящая из названия фильма.Я хочу вернуть измененное значение пользователю, чем база данных.Например,Если название фильма в базе данных 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')
)