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

2024-09-29 21:42:03 发布

您现在位置:Python中文网/ 问答频道 /正文

序列化程序

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框架


Tags: citysourcedataaddressmodelslengthmaxclass
1条回答
网友
1楼 · 发布于 2024-09-29 21:42:03

如果您运行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']

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

相关问题 更多 >

    热门问题