serializer.is_valid()失败,尽管`required = False`-Django REST Framework [英] serializer.is_valid() failing though `required=False` - Django REST Framework

查看:625
本文介绍了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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆