【发布时间】:2010-12-03 01:40:26
【问题描述】:
我正在尝试确定一个简单的缓存技巧是否真的有用。我知道 Django 查询集懒于提高效率,但我想知道它们是否在调用数据后保存查询结果。
例如,如果我有两个模型:
class Klass1(models.Model):
k2 = models.ForeignKey('Klass2')
class Klass2(models.Model):
# Model Code ...
@property
def klasses(self):
self.klasses = Klass1.objects.filter(k2=self)
return self.klasses
然后我在某处调用klass_2_instance.klasses[:],然后访问数据库并返回一个查询。我想知道如果我再次调用klass_2_instance.klasses,数据库会被第二次访问,还是django查询会保存第一次调用的结果?
【问题讨论】:
-
我有没有提到
klass而不是class看起来很糟糕?如果在class会导致错误的上下文中使用名称,则cls是 IMO 的方式。 -
不用担心,我只是在这里使用了 klass 作为任意名称。这不是我使用的实际模型,只是示例代码。
标签: python django django-models django-queryset