Django REST Framework:如何缓存SerializerMethodField的结果?

时间:2017-09-02 16:35:01

标签: django-rest-framework

我有一个SerializerMethodField进行了一些繁重的计算。我也使用相同的方法到同一个序列化程序的另一个SerializerMethodField。 如何缓存第一个的结果,所以我只运行一次繁重的计算?

1 个答案:

答案 0 :(得分:1)

由于计算在同一个序列化程序的两个方法之间很常见,因此可以使用cached_property装饰器。这将在模型实例上缓存方法的结果,只要实例执行,结果将保持不变。

from django.utils.functional import cached_property

class Person(models.Model):

    @cached_property
    def friends(self):
        ...