这是我的序列化器:
的串行
start_at=serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
end_at = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
现在我想在序列化程序中进行计算,制作此end_at - start_at
并将此值赋予waite_time
我怎么能这样做?
答案 0 :(得分:2)
您可以使用SerializerMethodField
来解决此问题:
这是一个只读字段。它通过调用附加到的序列化程序类上的方法来获取其值。它可用于将任何类型的数据添加到对象的序列化表示中。
您没有为您的班级提供任何详细信息,但这可能是例如:
class MySerializer(serializers.ModelSerializer):
start_at = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
end_at = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
# .... (any fields)
diff = serializers.SerializerMethodField()
def get_diff(self, obj):
return obj.end_at - obj.start_at
# .... (any meta etc)
您还可以在SerializerMethodField
中指定自定义方法名称,否则默认值为get_<field_name>
。