如何将memoization作为get,get_or_create应用于queryset方法

时间:2012-07-04 00:45:48

标签: django django-models memoization

在我的代码中,我需要缓存一些查找,例如:

MyModel.objects.get(slug='foo')

MyModel.objects.get_or_create(slug='bar', defaults={'name':'bar'})

以避免点击数据库。

我猜测对这些方法应用memoization可能是一个很好的解决方案,但我找不到正确的方法来实现它,

你能帮助我吗,

提前致谢

1 个答案:

答案 0 :(得分:0)

这些方法会为您返回对象,因此您可以立即对其进行缓存。

from django.core.cache import cache

a = cache.get('a')
if not a:
    a = MyModel.objects.get(slug='foo')
    cache.set('a', a)

b = cache.get('b')
if not b:
    b, exists = MyModel.objects.get_or_create(slug='bar', defaults={'name':'bar'})
    cache.set('b', b)

希望我不会误解你的问题。