当前位置: 首页 > 知识库问答 >
问题:

Django rest框架的Post空日期字段错误

鲍高扬
2023-03-14

model.py

class Form(models.Model):
    no = models.IntegerField()
    finish_date = models.DateField(blank=True, null=True)

serializers.py

class FormSerializer(serializers.ModelSerializer):
    class Meta:
        model = Form
        fields = '__all__'

如果我尝试:

http http://127.0.0.1:8000/api/forms no=112 "finish_date"=""

它会返回错误:

"finish_date": [
    "Date has wrong format. Use one of these formats instead: YYYY[-MM[-DD]]."
]

如果我将“finish_date”设置为空,则此帖子有效。并且StringField(blank=True,null=True)不会得到错误。

怎么解决?

共有3个答案

卜盛
2023-03-14

使用此代码修改序列化程序

class FormSerializer(serializers.ModelSerializer):

finish_date = serializers.DateTimeField(allow_null=True)

class Meta:
    model = Form
    fields = '__all__'
巫马阳飙
2023-03-14

现在在上面的模型中,你有一个日期字段,并且日期字段接受某些格式,类似于帖子错误中显示的格式。当您发帖时:

http http://127.0.0.1:8000/api/forms no=112 "finish_date"=""

实际上,您正在向序列化程序传递一个空字符串(“”),这不是DateField的有效格式。相反,在不传递“finish_date”参数的情况下尝试Post,我认为它会起作用。或者,您可以传递过去的默认日期,而不是传递空字符串。

夏侯浩气
2023-03-14

问题是DateTime字段当前不支持allow_blank关键字参数。

但是它支持< code>allow_null,因此您有两种选择:

    < li >发送前清除数据

Scrub"finish_date": "" -

如果您使用 JavaScript 提交表单,您可能需要执行以下操作:

if (data["finish_date"] == "") {
    data["finish_date"] = null;
}

Scrub"finish_date": "" -

您可以使用<code>轻松完成此操作。ModelSerializer上的to_internal_value()方法

class FormSerializer(serializers.ModelSerializer):
    class Meta:
        model = Form
        fields = '__all__'

    def to_internal_value(self, data):
        # check for "finish_date": "" and convert to None
        # This must be done before .validate()
        if data['finish_date'] == '':
            data['finish_date'] = None
        return super(FormSerializer, self).to_internal_value(data)

<代码>。《Django Rest Framework Fields API参考》中多次提到了to_internal_value()方法

 类似资料:
  • 我想我会在这里问这个问题,因为我不太确定我会错在哪里。我正在尝试使用Django Rest框架类通过AJAX执行POST请求。但是,每当事件触发时,我都会收到以下错误: 这是堆栈跟踪中显示的内容: 上下文 我试图做到这一点,当用户单击“添加到列表”按钮时,它会向用户定义的列表发送一个cafeName(以及最终的其他详细信息)。 我想知道是否有人可以看看我的代码,并给我一些指导,我哪里出了问题? 代

  • 我在映射中设置了一个日期字段,如下所示: 在我的应用程序中,字段group psAssignedDate最初设置为空字符串。分配组时,将生成unix时间戳并将其存储在字段中。我试图使用elasticsearch的批量更新功能来引入一组带有“AssignedDate”的文档,因为还没有分配组。不过,Elasticsearch不会对文档进行索引。这在日志文件中: 弹力搜索似乎支持JSON空值...我需

  • 我有数据帧,它有几个具有日期数据的列。我想对列应用验证,如果日期错误,我想用错误消息列更新该数据帧。我尝试过但工作不正常。我的示例数据帧数据。 我尝试了以下代码。 预期数据帧

  • 我有一个java实体类TimeEntry.java它的属性之一是Date,它看起来像这样。 对于该字段,在swagger UI模型模式上,字段日期显示为“日期”:“2016-01-08T22:34:22.337Z”,但我需要该字段作为“日期”:“2016-01-08”。 我尝试了以下方法: 请帮帮忙。

  • 当我要求一个图像http://127.0.0.1:8000/api/images/1/或者传入参数进行裁剪http://127.0.0.1:8000/api/images/1/?height=320 我得到的答复是: 而在http://127.0.0.1:8000/api/images/ 答复是: 为什么缩略图不容易返回主机名,我如何将基本网址追加到响应中? 以下是我的看法。派克

  • 我是DRF的新手,我有这个序列化器,但我无法创建帖子,因为即使在将图像上传到该字段后,它也会在postman中不断向我显示这一点。在正常的django中,此PostImage模型与Post有外键关系,我使用表单集上传多张图像。 有人能帮我解决这个问题并告诉我它是如何工作的吗? 序列化程序。py公司 意见。py公司 更新: 有效载荷。 更新的createserializer 基于上次编辑的响应 }