Django CacheMachine 中的错误会忽略模型的保存吗?

Bug in Django CacheMachine ignores saving of Model?

我有一个非常简单的 Django class:

from django.db import models

class MyClass(models.Model):
    a = models.IntegerField()
    b = models.IntegerField()

    def __str__(self):
        return "MyClass #%s: a: %s, b %s" % (self.pk, self.a, self.b)

当我执行 CRUD 类型的操作时,这个 class 工作正常:

>>> from statistics.models import MyClass
>>> print MyClass.objects.all()
[]
>>> x = MyClass(a=6, b=10)
>>> print MyClass.objects.all()
[]
>>> print x
MyClass #None: a: 6, b 10
>>> x.save()
>>> print MyClass.objects.all()
[<MyClass: MyClass #2: a: 6, b 10>]
>>>

现在我 add/modify 3 行 class 定义启用 CacheMachine:

from caching.base import CachingManager, CachingMixin  # This line added
from django.db import models

class MyClass(CachingMixin, models.Model):             # Added a Mix-in
    a = models.IntegerField()
    b = models.IntegerField()
    objects = CachingManager()                         # This line added

    def __str__(self):
        return "MyClass #%s: a: %s, b %s" % (self.pk, self.a, self.b)

manage.py makemigrationsmanage.py migrate 之后,我 t运行cate 数据库,刷新 memcached 和 运行 我之前 运行 相同的实验。

然而那个实验失败了!保存新创建的 MyClass 实例后,查询数据库显示它不存在。为什么?如何解决这个问题?还有其他人看过吗?

>>> print MyClass.objects.all()
[]
>>> x = MyClass(a=6, b=10)
>>> print MyClass.objects.all()
[]
>>> print x
MyClass #None: a: 6, b 10
>>> x.save()
>>> print MyClass.objects.all()
[]

仅供参考,我 运行 显示了 Django 缓存机器的测试 here。都通过了。

你确定你是运行这个针对我分支的测试吗?这是我遇到的(类似的)问题并已解决。

每次保存都应该使与模型相关的所有查询集失效。所以在这种情况下,在 x.save() 之后对象 MyClass 不应该在你的缓存中有任何信息。

我已经测试过并且在我的案例中工作正常,使用 Redis 作为 nocache 数据库。

我刚刚在 windows 机器上测试了我的叉子,现在我自己检查一下:

图片检查:http://oi61.tinypic.com/2w5jf9d.jpg

Github URL: https://github.com/asketsus/django-cache-machine