即使required = false,Django Rest Framework的serializer.is_valid()也会引发验证错误

时间:2015-05-28 17:13:58

标签: django django-rest-framework

我希望这些字段在我的表单中可选,但是......

错误:

{"name":["This field may not be blank."],"email":["This field may not be blank."]}

串行:

class StudentSerializer(ModelSerializer):
    name = CharField(read_only=False, required=False, allow_null=True)
    user = StudentUserSerializer(read_only=True)
    invite = StudentInviteSerializer(read_only=True)

    email = CharField(read_only=False, required=False, allow_null=True)

    class Meta:
        model = Student
        fields = ('id', 'name', 'user', 'invite', 'email')

1 个答案:

答案 0 :(得分:9)

尝试在序列化程序的allow_blank=Truename字段中添加email

name = CharField(read_only=False, required=False, allow_null=True, allow_blank=True)

email = CharField(read_only=False, required=False, allow_null=True, allow_blank=True)

来自http://www.django-rest-framework.org/api-guide/fields/#charfield

  

max_length - 验证输入包含的字符数不超过此数量   min_length - 验证输入包含的字符数不少于此数   allow_blank - 如果设置为True,则应将空字符串视为有效值。如果设置为False,则空字符串被视为无效,并将引发验证错误。默认为False   trim_whitespace - 如果设置为True,则会修剪前导和尾随空格。默认为True   allow_null选项也可用于字符串字段,但不鼓励使用allow_blank。设置allow_blank=Trueallow_null=True都是有效的,但这样做意味着字符串表示将允许两种不同类型的空值,这可能导致数据不一致和细微的应用程序错误。