【发布时间】:2015-04-04 20:54:19
【问题描述】:
我有一个非常简单的 Django 类:
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 类型的操作时,这个类可以正常工作:
>>> 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>]
>>>
现在我在类定义中添加/修改 3 行以启用 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 makemigrations 和 manage.py migrate 之后,我截断数据库,刷新 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 Cache Machine 进行了测试,显示为 here。他们都通过了。
【问题讨论】:
-
看起来它可能与 django-cache-machine 中的这个打开的错误相同:github.com/jbalogh/django-cache-machine/issues/62
-
哇。这是一个非常大的错误,没有得到解决。它使整个 DjangoCacheMachine 几乎毫无用处。你知道是否有已知的解决方法吗?
-
我对缓存机器一无所知,我是在搜索 github 问题跟踪器后才发现的。我鼓励您将错误报告发布到 github 存储库,其中包含详细信息,以帮助贡献者重现该问题。这是一种简单而有意义的回馈方式,可能有助于在即将发布的版本中解决此问题。
标签: python django django-orm django-cache-machine