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