DRF django 中的日期字段

DateField in DRF django

我有一个带有 DateField 的模型。

class A(model.Model):
    a = model.DateField()


class SerializerA(serializers.ModelSerializer):
    class Meta:
        model = A
        fields = (a,)

我传递的有效载荷有可能只发送一年,例如:-

{
    "a": "1991"
}

它 returns 一个错误说

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

我已经传递了一种格式,如错误中所述,但我仍然遇到错误。

为什么?

您需要将所有需要的日期格式设置为 settings.py 中的变量 DATE_INPUT_FORMATS,例如:

DATE_INPUT_FORMATS = ['%d-%m-%Y']

一个简单的解决方案是,在序列化程序中将 field a 定义为单独的,并为 input_formats 参数

提供足够的值
<b>required_formats = ['%Y', '%d-%m-%Y']  # add other formats you need</b>


class SerializerA(serializers.ModelSerializer):
    <b>a = serializers.DateField(input_formats=required_formats)</b>

    class Meta:
        model = A
        fields = ('a',)