Просмотр исходного кода

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

Jeremy Stretch 5 лет назад
Родитель
Сommit
02a6e2190f
1 измененных файлов с 17 добавлено и 0 удалено
  1. 17 0
      netbox/netbox/__init__.py

+ 17 - 0
netbox/netbox/__init__.py

@@ -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