我正在接受这个error,虽然我在文本和标题字段中给出了正确的字符串。我不知道原因是什么,但是我能够发布其余三个字段的值(作者) ,CREATED_DATE,出版日期)。
Serializer.py
from rest_framework import serializers
from blog.models import Post
from django.utils import timezone
from rest_framework.validators import UniqueValidator
class blogSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('author','title', 'text','created_date','published_date')
model.py
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User',null=True)
title = models.CharField(max_length=200)
text = models.CharField(max_length=200)
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True,null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
views.py
from blog.models import Post
from .serializers import UserSerializer, GroupSerializer,blogSerializer
from rest_framework import viewsets,status
from rest_framework.decorators import api_view
class blogViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = blogSerializer
我在这里发布数据。
@api_view(['GET', 'POST'])
def blog_list(request):
if request.method=='GET':
my_blog=Post.objects.all()
serializers=blogSerializer(my_blog,Many=True)
return JsoResponse(serializers.data,safe=False)
elif request.method=='POST':
data=JSONParser().parse(request)
serializers=blogSerializer(data=data)
if serializers.is_valid():
serializer.save()
return JsonResponse(serializers.data,status=201)
return JsonResponse(serializers.errors,status=400)
答案 0 :(得分:0)
我会设置一个单元测试来测试这个功能。看起来您的任何帖子数据都没有进入序列化程序,否则一旦您提交表单就会重新填充有效字段,并且返回错误。标题和文本字段也是唯一需要/没有默认值的字段。
如果您在访问request.data
的视图上使用某种形式的装饰器(或类似的东西),这可能是造成问题的原因。由于休息框架在填充request.POST
request.data