为什么 DjangoRF 序列化器 is_valid 是错误的?
Why DjangoRF serializer is_valid is false?
我的class
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
为什么实例序列化器为 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
我有一个类似的问题,正如我在之前的评论中看到的那样,在 serializer.is_valid() 行之后,您可以编写下一个代码:'print(serializer.errors)'。这会从控制台为您提供有关序列化模型失败原因的信息。您可以通过以下方式找到信息:
if not serializer.is_valid():
print(serializer.errors)
只需使用以下代码找出验证错误:
print(serializer.errors)
我的class
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
为什么实例序列化器为 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
我有一个类似的问题,正如我在之前的评论中看到的那样,在 serializer.is_valid() 行之后,您可以编写下一个代码:'print(serializer.errors)'。这会从控制台为您提供有关序列化模型失败原因的信息。您可以通过以下方式找到信息:
if not serializer.is_valid():
print(serializer.errors)
只需使用以下代码找出验证错误:
print(serializer.errors)