我有一个名为 Task with field delay 的模型,它是一个持续时间字段。
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
}
]
我不愿意在写入或读取序列化程序中更改字段名称“延迟”。我怎样才能达到要求?
最佳答案
我通过使用 serializer method 解决了它自定义持续时间字段序列化,因此它可以在几秒钟内返回所需的值。
您的代码应如下所示:
class TaskSerializer(serializers.ModelSerializer):
delay = serializers.SerializerMethodField()
class Meta:
model = Task
fields = ('id', 'delay')
def get_delay(self, obj):
return obj.delay.total_seconds()
注意:也许你需要为 创建不同的序列化器类。创建 和 检索 对象,因为序列化器方法仅适用于只读字段
希望这可以帮助
关于django - 如何更改序列化程序中持续时间字段值的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428769/