Monkey-patch cacheops' _pre_save() receiver to tweak sender's QuerySet

This commit is contained in:
Jeremy Stretch 2020-07-07 17:09:41 -04:00
parent 847fbfd71a
commit 02a6e2190f

View File

@ -0,0 +1,17 @@
from cacheops.query import ManagerMixin, no_invalidation, _old_objs
# Monkey-patch cacheops' _pre_save() signal receiver. This is needed to mark the sending model's QuerySet as
# unrestricted.
def _pre_save(self, sender, instance, using, **kwargs):
if not (instance.pk is None or instance._state.adding or no_invalidation.active):
try:
qs = sender.objects.using(using)
if hasattr(qs, 'restrict'):
qs = qs.unrestricted()
_old_objs.__dict__[sender, instance.pk] = qs.get(pk=instance.pk)
except sender.DoesNotExist:
pass
ManagerMixin._pre_save = _pre_save