我有一个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个查询的查询数
目前没有回答
相关问题 更多 >
编程相关推荐