在序列化字段之间共享数据

2024-04-24 13:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个ModelSerializer类,它用SerializerMethodField实现一些字段。有几个字段根据从数据库检索的汇率(如果有的话)计算货币数据,否则从银行API检索。 在当前的实现中,有许多对数据库的简短查询只是为了检索或检查速率。我正在考虑通过在字段之间共享已计算的数据来减少查询的数量。 代码将更好地解释这一想法:

class CalcualteSomethingSerializer(ModelSerializer):
    currency_value_1 = serializers.SerializerMethodField()
    currency_value_2 = serializers.SerializerMethodField()

    def get_currency_value_1(obj):
        if obj.currency_code != 'USD':
            rate = get_rates('USD', obj.currency_code, obj.date)
            return calculation_logic1(obj.value, rate)

    def get_currency_value_2(obj):
        if obj.currency_code != 'USD':
            rate = get_rates('USD', obj.currency_code, obj.date)
            return calculation_logic2(obj.value, rate)

我试图将速率保存到self._kwargs中,但它只减少了5个查询的查询数


Tags: 数据数据库objgetifratevalue速率