Python 对象在Django Rest框架中不可编辑错误

Python 对象在Django Rest框架中不可编辑错误,python,django,django-rest-framework,Python,Django,Django Rest Framework,我是django rest框架的新手,我正在尝试构建一个简单的电影API。我创建了3个模型:电影、演员和评论,在应用迁移后,我在django admin的表中添加了值。当我启动服务器时,api工作正常,直到我再次在Cast表或reviews表中添加值,它给我的错误是:“'Cast'对象不可编辑”。而且它也不显示电影表数据。我做错了什么。 这是我的密码: models.py from django.db import models # Create your models here. cla

我是django rest框架的新手,我正在尝试构建一个简单的电影API。我创建了3个模型:电影、演员和评论,在应用迁移后,我在django admin的表中添加了值。当我启动服务器时,api工作正常,直到我再次在Cast表或reviews表中添加值,它给我的错误是:“'Cast'对象不可编辑”。而且它也不显示电影表数据。我做错了什么。 这是我的密码:

models.py

from django.db import models

# Create your models here.


class Cast(models.Model):
    actor = models.CharField(max_length=225)
    producer = models.CharField(max_length=225)
    director = models.CharField(max_length=225)
    screenwriter = models.CharField(max_length=225)


class Reviews(models.Model):
    name = models.CharField(max_length=225)
    comment = models.CharField(max_length=225)


class Movies(models.Model):
    name = models.CharField(max_length=225)
    genre = models.CharField(max_length=225)
    ratings = models.IntegerField()
    cast = models.ForeignKey(Cast, on_delete=models.CASCADE)
    review = models.ForeignKey(Reviews, on_delete=models.CASCADE)

序列化程序.py

from .models import Movies, Reviews,Cast
from rest_framework import serializers


class CastSerializer(serializers.ModelSerializer):
    class Meta:
        model = Cast
        fields = ('actor', 'producer', 'director', 'screenwriter')


class ReviewsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Reviews
        fields = ('name', 'comment')


class MoviesSerializer(serializers.ModelSerializer):
    cast = CastSerializer(many=True)
    review = ReviewsSerializer(many=True)

    class Meta:
        model = Movies
        fields = ('name', 'genre',  'ratings', 'cast' , 'review')

views.py

from django.shortcuts import get_object_or_404
from .serializers import MoviesSerializer, ReviewsSerializer, CastSerializer
from rest_framework import viewsets
from rest_framework.response import Response
from .models import Movies,  Reviews, Cast
# Create your views here


class MovieViewSet(viewsets.ViewSet):
    def list(self, request):
        cast = Cast.objects.all()
        movies = Movies.objects.all()
        reviews = Reviews.objects.all()
        print(movies)
        movies_serializer = MoviesSerializer(movies, many=True)
        cast_serializer = CastSerializer(cast, many=True)
        reviews_serializer = ReviewsSerializer(reviews, many=True)
        data = {'movies_serializer': movies_serializer.data, 'cast_serializer': cast_serializer.data,
                'reviews_serializer': reviews_serializer.data}
        return Response(data)

url.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('movies/', include('api.urls'))
]


这里的
案例
审阅
电影
具有FK关系,因此您的
电影序列化程序
类必须如下所示

class MoviesSerializer(serializers.ModelSerializer):
    cast = CastSerializer() # remove `many=True`
    review = ReviewsSerializer() # remove `many=True`

    class Meta:
        model = Movies
        fields = ('name', 'genre',  'ratings', 'cast' , 'review')
class MoviesSerializer(serializers.ModelSerializer):
cast=CastSerializer()#删除'many=True`
review=ReviewSerializer()#删除'many=True`
类元:
模特=电影

fields=('name'、'genre'、'ratings'、'cast'、'review')
谢谢,它解决了这个错误,您能解释一下为什么Many=true会给出错误吗?当您输入
Many=true
DRF时,希望数据是可编辑的。在您的情况下,
Movies.cast
不是一个可编辑的\