我有一个非常简单的 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
and之后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 进行了测试。他们都通过了。