序列化程序
class AddressSerializer(serializers.ModelSerializer):
Address1 = serializers.CharField(source='address1')
Address2 = serializers.CharField(source='address2')
City = serializers.CharField(source='city')
State = serializers.CharField(source='state')
Zip = serializers.CharField(source='zipcode')
class Meta:
model = Address
fields = ('Address1', 'Address2', 'City', 'State', 'Zip')
模型
class Address(models.Model):
address1 = models.CharField(max_length=50)
address2 = models.CharField(max_length=50, null=True)
city = models.CharField(max_length=50)
state = models.CharField(max_length=50)
zipcode = models.CharField(max_length=50)
因此,在shell(manage.py)中,当我运行时:
address = Address(address1='123 Sesame St', address2=None, city='Jurassic City', state='California', zipcode='90210')
address.save()
serializer = AddressSerializer(address)
content = JSONRenderer().render(serializer.data)
stream = io.BytesIO(content)
data = JSONParser().parse(stream)
serializer = AddressSerializer(data=data)
serializer.is_valid()
为什么serializer.is\u valid()返回false?提交数据时,Address2可能为空
编辑:问题似乎是address=None。因为当我放入一个字符串时,它将是有效的
Django Rest框架
如果您运行
serializer.errors
,您将得到{'Address2': [ErrorDetail(string='This field may not be null.', code='null')]}
问题在于您的序列化程序,因为您使用的是ModelSerializer,所以我将按如下方式重写它:
字段必须与模型中的字段匹配
相关问题 更多 >
编程相关推荐