为什么我的数据无效? (serializer.is_valid()返回False)

问题描述 投票:0回答:1

序列化器

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_valid()返回false?提交数据时,Address2可能为空。

编辑:问题似乎出在address = None。因为当我放置一个字符串时它将是有效的。

Django Rest Framework

python django django-rest-framework
1个回答
0
投票

如果运行serializer.errors,您将得到{'Address2': [ErrorDetail(string='This field may not be null.', code='null')]}

问题出在您的序列化程序中,因为您使用的是ModelSerializer,所以我只需要像这样重写它:

class AddressSerializer(serializers.ModelSerializer):

    class Meta:
        model = Address
        fields = ['address1', 'address2', 'city', 'state', 'zipcode']

字段必须与模型中的字段匹配

© www.soinside.com 2019 - 2024. All rights reserved.