У меня довольно тяжелые вычисления и много доступа к базе данных, но их можно использовать повторно в SerializerMethodField из ModelSerializer, как мне получить эти расчетные данные для всего метода.
Пример кода
class MySerializer(serializers.ModelSerializer):
a = serializers.SerializerMethodField()
b = serializers.SerializerMethodField()
def get_a(self, obj):
result_x = heavy_calculation(self.context['request'].user, obj)
return result_x + 1
def get_b(self, obj):
result_x = heavy_calculation(self.context['request'].user, obj)
return result_x + 2
heavy_calculation () в обоих методах - это одна и та же функция, поэтому result_x будет одинаковым ответом для любых запросов. Я хотел бы сделать вызов heavy_calculation () только один раз для каждого запроса, чтобы уменьшить нагрузку (моя настоящая работа хотела бы вызывать 10+ раз)
С уважением,