我在 Django 中有一个带有 IntegerField 的模型:
class MyModel(models.Model):
number = models.IntegerField(default=0)
我使用 Django REST Framework 的模型序列化程序:
class MySerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
REST 框架创建的 JSON 是:
{
"number": null
}
问题是,如果我只是按照收到的原样发回,则验证失败。为了让接收到的 JSON 对象使用
0
,我要更改什么?而不是 null
对于一个对象?
最佳答案
正如 Mark Galloway 评论的那样,如果您的数据库中有空数据,则会出现空值。您可以通过更改序列化程序中的验证登录来解决此问题:
class MySerializer(serializers.ModelSerializer):
number = models.IntegerField(initial=0, allow_null=True)
class Meta:
model = MyModel
或者通过改变数据被序列化回用户的方式:
class MyIntegerField(serializers.IntegerField):
def to_representation(self, value):
if value is None:
return 0
return super(MyIntegerField, self).to_representation(value)
class MySerializer(serializers.ModelSerializer):
number = MyIntegerField(initial=0)
class Meta:
model = MyModel
关于Django REST Framework 将 'null' 替换为 IntegerField 中的 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328467/