Django REST API serializer.is_valid() 总是 returns false

Django REST API serializer.is_valid() always returns false

我正在尝试通过 REST API 从前端向后端发出 POST 请求。我将作为数据传递的字典包含数据库

中 table 的所有字段

来自前端的数据如下所示:

var state = {
  event: {
    name: "test",
    id_organizer: 1,
    start_date: "2019-11-11T11:11:11",
    end_date: "2019-12-11T11:12:11",
    location: "test",
    description: "test",
    id_type: 1,
    status: "pending",
  }
}

和POST这样的请求:

axios
      .post("http://127.0.0.1:8000/api/addevent", state.event)
      .then(response =>{
        console.log(response.data);
      }) 
      .catch(err => console.log(err));

活动模型如下:

class Event(models.Model):
   name = models.TextField()
   id_organizer = models.ForeignKey(User, on_delete=CASCADE, db_column='id_organizer')
   start_date = models.DateTimeField()
   end_date = models.DateTimeField()
   location = models.TextField()
   description = models.TextField()
   id_type = models.ForeignKey(EventType, on_delete=CASCADE, db_column='id_type')
   status = models.CharField(max_length = 50)
   class Meta:
      db_table="events"

Here is the database table

这是@api_view:

@api_view(['POST'])
def addevent(request):
   if request.method == "POST":
      data =  JSONParser().parse(request)
      serializer = EventSerializer(data=data)
      if serializer.is_valid():
         serializer.save()
         return Response({'saved':True},status=status.HTTP_201_CREATED)
      else:
         return Response({'saved':False}, status=status.HTTP_400_BAD_REQUEST)

这是序列化程序:

class EventSerializer(serializers.ModelSerializer):
class Meta:
    model = Event
    fields = '__all__'

请求发生但函数 serializer.is_valid() 总是 returns false 并且响应总是 {'saved':False} 我已经验证了发送的数据是否正确,当我打印它时,我得到了输出:

{
   "name": "test",
   "id_organizer": 1,
   "start_date": "2019-11-11T11:11:11",
   "end_date": "2019-12-11T11:12:11",
   "location": "test",
   "description": "test",
   "id_type": 1,
   "status": "pending",
 }

这个数据是正确的,我得出的结论是问题出在“is_valid()”函数上。 我试图对 api 视图中的数据进行硬编码,但它 运行 进入了同一个问题。 我已经检查并尝试了关于该主题的大部分帖子,但我找不到我的错误。

您输入的日期时间可能未通过模型日期时间字段进行验证。 您可能需要使用 strptime 更改日期时间格式。