serializer.is_valid()失败,尽管`required = False`-Django REST Framework [英] serializer.is_valid() failing though `required=False` - Django REST Framework
本文介绍了serializer.is_valid()失败,尽管`required = False`-Django REST Framework的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的序列化器:
I have a serializer like so:
class DataSetColumnSerializer(serializers.ModelSerializer):
custom_target = serializers.PrimaryKeyRelatedField(required=False)
class Meta:
model = dataset_models.DataSetColumn
Yet:
ipdb> columns[0]
{u'display_name': u'guid', u'name': u'guid', u'data_type': u'STRING', u'custom_target': None, u'ignore': False, u'is_identifier': False, u'order': 1}
ipdb> serializer.is_valid()
False
ipdb> serializer.errors
[{'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}, {'custom_target': [u'This field cannot be blank.']}]
ipdb> serializer.fields['custom_target'].required
False
这是怎么回事?
推荐答案
从文档中:
注意:将验证应用于ModelSerializer时,
序列化程序字段及其相应的模型字段都必须正确验证
。如果您的模型上有可选字段,请确保
在模型字段上正确设置blank = True,以及在序列化器字段上设置
required = False。
Note: When validation is applied to a ModelSerializer, both the serializer fields, and their corresponding model fields must correctly validate. If you have optional fields on your model, make sure to correctly set blank=True on the model field, as well as setting required=False on the serializer field.
这篇关于serializer.is_valid()失败,尽管`required = False`-Django REST Framework的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文