我有一个这样的序列化器:
class DataSetColumnSerializer(serializers.ModelSerializer):
custom_target = serializers.PrimaryKeyRelatedField(required=False)
class Meta:
model = dataset_models.DataSetColumn
然而:
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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句