Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将无传递给DRF SerializerField';s to_表示法_Python_Django_Django Rest Framework_Django Serializer - Fatal编程技术网

Python 将无传递给DRF SerializerField';s to_表示法

Python 将无传递给DRF SerializerField';s to_表示法,python,django,django-rest-framework,django-serializer,Python,Django,Django Rest Framework,Django Serializer,我有以下序列化字段: class TimestampField(Field): def to_representation(self, value): if not value: return '' return value.timestamp() 我在我的序列化程序中这样使用它: class ArticlePhotobookSerializer(ModelSerializer): delivery_date_fro

我有以下序列化字段:

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

        return value.timestamp()
我在我的序列化程序中这样使用它:

class ArticlePhotobookSerializer(ModelSerializer):  
    delivery_date_from = TimestampField()
    delivery_date_to = TimestampField()

现在getter
delivery\u date\u to
可以返回None,我想使用
to\u表示法将其转换为空字符串。但是,当我使用序列化程序解析这个None值时,它甚至没有输入
to_表示法
方法,并立即返回
None
。对于
None
,我应该更改什么以同时使用方法
to_representation

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

您可以编写mixin类来覆盖默认的
表示形式

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
并在序列化程序中使用它:

class ArticlePhotobookSerializer(ToReprMixin, ModelSerializer):  
    ...
这是一个很好的“功能”…;-)谢谢你给我指出这一点!我希望一个场景就可以了,对于这样一件小事来说,这是一个很大的改变。