我有一个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个查询的查询次数。