【发布时间】:2016-03-25 20:38:28
【问题描述】:
我遇到了一个问题,即使序列化中提供的数据不完整,我的 serializer.is_valid() 方法仍返回 true。我有一个看起来像这样的简单模型:
class Dummy(models.Model):
first_name = models.TextField(max_length=128)
last_name = models.TextField(max_length=128)
organization = models.TextField(max_length=128)
email = models.EmailField()
can_contact = models.BooleanField()
为此我创建了以下序列化程序:
class DummySerializer(serializers.ModelSerializer):
class Meta:
model = Dummy
fields = ('first_name', 'last_name', 'organization', 'email',
'can_contact',)
如果我再运行这个测试(注意输入序列化中缺少can_contact):
>>> serializer = DummySerializer(data = {'first_name': 'foo', 'last_name': 'bar', 'organization': 'quux inc', 'email': 'foo@example.com'})
>>> serializer.is_valid()
True
如果我要尝试保存序列化程序,我会遇到约束失败:
django.db.utils.IntegrityError: NOT NULL constraint failed: demo_dummy.can_contact
它似乎专门是 BooleanField;任何其他字段都将被正确识别为缺失。序列化程序出了什么问题,除了自己手动输入验证之外,我该怎么办?
感谢您的宝贵时间!
【问题讨论】:
标签: django serialization