Заменить данные в закэшированной странице
У меня есть модель которая имеет синхронизацию к внешнему объекту из стороннего АПИ.
class Local(models.Model):
external_mapping_id = models.IntegerField()
name = models.CharField(max_length=255)
url = models.UrlField()
Также есть эндпойнт который выдает список всех объектов из внешнего источника и эта вьюшка кэшируется через DatabaseCache. Когда я меняю поля name или url мою вьюха автоматом обновляет эти поля во внешнем апи. Но изза того что я кэширую эндпойнт получения данных из внешнего источника, я не сразу могу увидеть обновленные данные.
Конечно я могу очищать кэш при обновлении. Но я бы хотел узнать, есть ли способ менять данные в кэше не удаляя его?
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'google_service_cache',
}
}
mixin который кэширует
class CachedListModelMixin(mixins.ListModelMixin):
@method_decorator(cache_page(timeout=60*60)) # 1 hour
def list(self, request, *args, **kwargs):
return super().list(request, *args, **kwargs)