1

我正在使用 Python 2.6.5 和 Django 1.3

让我说我有这样的模型:

class Company(models.Model):
    name = models.CharField(...)
    type = models.SmallIntegerField(...)
    ....

    def check_condition(self, someParam):
        do someThing...
        return someThing

这是一个使用频率很高的模型,所以我将基本数据保存在字典中并缓存这个字典

aComp = Company.objects.get(pk=somevalue)
compDict = {'name':aComp.name, 'type': aComp.type...}
cache.set('companyInfo', compDict)

一切都很好,但在某些情况下,我需要调用的方法,Company但由于我缓存了公司信息,我想知道缓存对象是否好......就像

compDict = {'name':aComp.name, 'type': aComp.type, 'obj':aComp}

并使用它

myComp = cache.get('companyInfo')
compInst = myComp['obj']
compInst.check_condition(aParam)

而且我想知道缓存对象并使用缓存对象进行实例方法调用的效果如何?

4

1 回答 1

2

没有问题。当然酸洗对象会有一些开销,而不是原始数据,但你不会注意到它。

请记住,当您访问 ForeignKey、ManyToManyField 和 OneToOneField 时,无论如何您都会命中 DB。但是您可以手动缓存这些关系。

于 2012-01-11T11:17:11.647 回答