如何在序列化器中更改持续时间字段值的格式?

时间:2017-09-26 14:11:39

标签: django serialization django-rest-framework

我有一个名为Task的模型,字段延迟是一个持续时间字段。

class Task:
    delay = models.DurationField(timedelta(seconds=0))

和序列化器如下。

class TaskSerializer(serializers.ModelSerializer):

    class Meta:
        model = Task
        fields = ('id', 'delay')

在使用序列化程序创建实例时,我会传递{delay: 30}等期望传递秒数的数据。

按预期创建实例。但是在检索时,我得到了结果。

[
    {
        "delay": "00:00:00.000060",
    },
    {
        "delay": "00:00:00.000050",
    },
    {
        "delay": "00:00:00.000060",
    }
]

我试图仅在整数格式中获得串行器中的延迟值。例如:

[
    {
        "delay": 60,
    },
    {
        "delay": 50,
    },
    {
        "delay": 60
    }
]

我不愿意在写入或读取序列化程序中更改字段名称“delay”。我怎样才能达到要求?

1 个答案:

答案 0 :(得分:1)

我猜这个整数被解释为微秒,你需要将秒作为字符串发送

{"delay": "60"}

如果要将秒作为整数发送(在json中),则需要创建自定义字段。最简单的方法是继承DurationField()并根据您的需要调整行为。