DRF Django中的DateField

时间:2019-01-15 16:47:20

标签: django django-rest-framework django-serializer

我有一个具有DateField的模型。

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


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

我通过的有效负载可能只发送一年,例如:-

{
    "a": "1991"
}

它返回一条错误消息,

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

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

为什么?

2 个答案:

答案 0 :(得分:1)

一种简单的解决方案是,在序列化程序中将field a定义为单独的变量,并为input_formats参数提供足够的值

required_formats = ['%Y', '%d-%m-%Y']  # add other formats you need


class SerializerA(serializers.ModelSerializer):
    a = serializers.DateField(input_formats=required_formats)

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

答案 1 :(得分:0)

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

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