gpt4 book ai didi

django - 如何更改序列化程序中持续时间字段值的格式?

转载 作者:行者123 更新时间:2023-12-04 02:02:11 33 4
gpt4 key购买 nike

我有一个名为 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com