将None传递给DRF SerializerField的to\u表示

2024-05-29 03:31:13 发布

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

我有以下SerializerField:

class TimestampField(Field):
    def to_representation(self, value):
        if not value:
            return ''

        return value.timestamp()

我在序列化程序中这样使用它:

^{pr2}$

现在getterdelivery_date_to可以返回None,我想使用to_representation方法将其转换为空字符串。但是,当我使用序列化程序解析这个None值时,它甚至不输入to_representation方法,并立即返回None。我应该做些什么来对None使用to_representation方法?在


Tags: to方法self程序nonefieldreturnif
1条回答
网友
1楼 · 发布于 2024-05-29 03:31:13

默认情况下,序列化程序的to_representation方法跳过没有值的字段(请参见source)。在

您可以编写mixin类来覆盖默认值to_representation

class ToReprMixin(object):  
    def to_representation(self, instance):
        ret = OrderedDict()
        fields = [field for field in self.fields.values() if not field.write_only]

        for field in fields:
            try:
                attribute = field.get_attribute(instance)
            except SkipField:
                continue

            ret[field.field_name] = field.to_representation(attribute)

        return ret

并在序列化程序中使用它:

^{pr2}$

相关问题 更多 >

    热门问题