为什么DjangoRF序列化器is_valid是假的?

时间:2018-05-24 12:25:54

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

我的班级

class SprintSerializer(serializers.ModelSerializer):

    links = serializers.SerializerMethodField()

    class Meta:
        model = Sprint
        fields = ('id', 'name', 'description', 'end', 'links', )

在我的shell中,我使用数据填充了一个序列化程序

serializer = SprintSerializer(data=({'name':'JHolmes','description':'ambassador','end':'2019-01-27T15:17:10.375877'}))

然后

serializer.data
{'name': 'JHolmes', 'description': 'ambassador', 'end': '2019-01-27T15:17:10.375877'}
serializer.validated_data
{}
serializer.is_valid()
False

为什么实例序列化程序为假? 编辑 正如Berry指出的那样,数据格式是错误的

serializer.errors
{'end': [ErrorDetail(string='Date has wrong format. Use one of these formats instead: YYYY[-MM[-DD]].', code='invalid')]}

解决了问题

'end':'2019-01-27'
serializer.is_valid()
True

2 个答案:

答案 0 :(得分:2)

我有一个类似的问题,正如我在前面的注释中看到的那样,在serializer.is_valid()行之后,您可以编写下一个代码:'print(serializer.errors)'。这会从控制台为您带来有关为什么序列化模型出现故障的信息。您可以找到信息的方式可能是:

if not serializer.is_valid():
   print(serializer.errors)

答案 1 :(得分:2)

只需使用以下代码找出验证错误:

.gm-style-pbc{
   + div{
     > div{
       >div{
         &:first-child{
            z-index: 108 !important;
         }
       }
     }
   }
}