我希望这些字段在我的表单中可选,但是......
{"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')
答案 0 :(得分:9)
尝试在序列化程序的allow_blank=True
和name
字段中添加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,则空字符串被视为无效,并将引发验证错误。默认为Falsetrim_whitespace
- 如果设置为True,则会修剪前导和尾随空格。默认为Trueallow_null
选项也可用于字符串字段,但不鼓励使用allow_blank
。设置allow_blank=True
和allow_null=True
都是有效的,但这样做意味着字符串表示将允许两种不同类型的空值,这可能导致数据不一致和细微的应用程序错误。