调用Article.objects.create()时出现TypeError异常

时间:2019-11-03 11:35:12

标签: django reactjs django-rest-framework

我正在使用Django REST FRAMEWORK进行Django React Project,我正在尝试发布一些与模型相关的数据。

项目的列表视图和详细信息视图工作正常,唯一的问题是当我尝试发出POST请求时。

每当我尝试将数据发布到CreateAPIView中时,我都会收到错误消息:

Got a `TypeError` when calling `Article.objects.create()`.  This may be because 
you have a writable field on the serializer class that is not a valid argument to
`Article.objects.create()`.  You may need to make the field read-only, or override
the ArticleSerializer.create() method to handle this correctly.

我搜索了过去的各种问题,但似乎没有一个能解决我的问题。

这是我的序列化文件:

from rest_framework import serializers
from articles.models import Article

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ('id','title','content','star_count','like_count','comment_count','avatar') 

这是我的视图文件

from rest_framework.generics import  ListAPIView,RetrieveAPIView,CreateAPIView,UpdateAPIView,DestroyAPIView
from .serializers import ArticleSerializer
from articles.models import Article
from rest_framework import viewsets



class ArticleViewSets(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

模型文件

    content = models.TextField()
    comment_count = models.IntegerField(default=0,null=True,blank=True)
    like_count = models.IntegerField(default=0,null=True,blank=True)
    star_count = models.IntegerField(default=0,null=True,blank=True)
    avatar = models.ImageField(null=True,blank=True)

    def  __str__(self):
        return self.title

    def save(self):
        if not self.slug:
            self.slug = slugify(self.title)
        super(Article,self).save()

这是当我尝试基于Django rest框架createAPIVew发出POST请求时生成的错误

Got a `TypeError` when calling `Article.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Article.objects.create()`. You may need to make the field read-only, or override the ArticleSerializer.create() method to handle this correctly.

0 个答案:

没有答案