【发布时间】:2021-01-20 18:06:13
【问题描述】:
我正在尝试创建一个在请求 API 数据时返回值 0 而不是 Null 的序列化程序。
class MyIntegerField(serializers.IntegerField):
def to_representation(self, value):
if value is None:
return 0
return super(MyIntegerField, self).to_representation(value)
class ListSerializer(serializers.ModelSerializer):
post_count = MyIntegerField(initial=0)
class Meta:
model = Post
fields = (...,
'post_count',
...)
模型.py:
post_count = models.IntegerField(blank=True, null=True)
如果用户没有帖子,那么我想返回值 0,而不是 Null。
我当前的序列化程序有什么问题?我认为输入的字段仍然是从我的模型字段中提取的,而不是新的序列化程序函数。
目前,当用户请求数据时,我仍然收到 Null。
【问题讨论】:
-
我认为您正在寻找
.to_internal_value(self, data)方法而不是to_representation(self, value)方法。 -
Willem,刚刚尝试了您对函数的方法推荐并返回。没有收到任何错误,但在返回数据中仍然收到
Null。
标签: python django django-rest-framework