首页 > 解决方案 > 在 Django Rest Framework 中缓存序列化程序响应

问题描述

我正在使用序列化程序来获取特定资源的相关数据,如下所示:

会话序列化器.py

def to_representation(self, instance):
  response = super().to_representation(instance)
  response["user"] = UserSerializer(instance.user).data
  if instance.experiment:
      response["experiment"] = ExperimentSerializer(instance.experiment).data
  response["last_event"] = EventSerializer(instance.last_global_event).data

  # fetch and return all session answers tied to this session
  response["session_answers"] = instance.sessionanswer_set.values()
  return response

我还在 SessionViewSet 中使用 DRF 缓存装饰器,这似乎工作正常。但是,当实例有更新和/或任何相关实例(如用户)有更新时,我不能使缓存数据无效。

是否有关于如何在更新时清除缓存数据的标准做法或文档?

标签: pythondjangocachingdjango-rest-frameworkdjango-redis

解决方案


要监听数据库记录的更改并根据它们进行更改,可以使用 django 信号:

https://docs.djangoproject.com/en/3.2/topics/signals/


推荐阅读