放置日期字段时,django rest 400会响应

时间:2017-10-14 22:27:11

标签: django serialization django-rest-framework

我将一个日期时间值放到我的drf后端。这是我的代码:

models.py

class MyModel(models.Model):
    ....
    date = models.DateField(blank=true, null=true)  
    .....

serializers.py

class MyModelSerializer(ModelSerializer):  
    class Meta:  
        model = MyModel
        fields = '__all__'

views.py

class UpdateNRetrieve(RetrieveUpdateAPIView):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer
    lookup_field = 'pk'

在我的settings.py上我有这个:

REST_FRAMEWORK = [
    .....
    'DATE_FORMAT': '%d/%m/%Y',
    'DATE_INPUT_FORMATS': '%d/%m/%Y',
    .....
]

还有这个:

LANGUAGE_CODE = 'it-IT'

TIME_ZONE = 'Europe/Rome'

USE_I18N = True

USE_L10N = True

USE_TZ = True  

当我从我的前端发出PUT请求时,我收到400错误(错误请求),这个值为:

date:"04/12/1984"  

我总是得到这样的答复:

日期格式错误。请改用以下格式之一:%,d,/,%,m,/,%,Y。"

我无法意识到我的错误在哪里!

2 个答案:

答案 0 :(得分:2)

'DATE_INPUT_FORMATS': '%d/%m/%Y',

你确定这个键需要一个字符串而不是一个列表吗?

来自documentation

  

默认情况下应该用于解析输入的格式字符串列表

答案 1 :(得分:2)

settings.py中的

DATE_INPUT_FORMATS应该是一个列表:

'DATE_INPUT_FORMATS': ['%d/%m/%Y'],