我如何在序列化器中计算?

nat*_*ila 2 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")  
Run Code Online (Sandbox Code Playgroud)

现在我想在序列化器中进行计算,制作这个end_at - start_at
并将这个值赋予waite_time
我如何做到这一点?

Wto*_*wer 5

您可以使用 aSerializerMethodField来解决这个问题:

这是一个只读字段。它通过调用其附加的序列化器类上的方法来获取其值。它可用于将任何类型的数据添加到对象的序列化表示中。

您没有提供课程的任何详细信息,但这可能是例如:

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)
Run Code Online (Sandbox Code Playgroud)

您还可以在 中指定自定义方法名称,SerializerMethodField否则默认为get_<field_name>