如何在序列化器中计算?

时间:2015-12-07 09:14:52

标签: django django-rest-framework

这是我的序列化器:
串行

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
我怎么能这样做?

1 个答案:

答案 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>