在django start上设置变量,并在所有视图中使用它

时间:2016-05-05 16:46:50

标签: python django model

我有一个基于数据库查询设置的变量(它大约每6个月更改一次),但我发现每次需要时都要查询数据库效率很低。我相信必须有一种更有效的方法来处理这个问题。上下文处理器,也许?

当前核心看起来像这样,我目前在数据库的每个寄存器中调用 active_period 一次:

class RegistrationQuerySet(models.QuerySet):

    def active_period(self):
        try:
            active_period = AcademicPeriod.objects.is_active()[0]
            return self.filter(academic_period=active_period)
        except:
            return self

1 个答案:

答案 0 :(得分:1)

请查看有关Database access optimisationcaching API

的文档
from django.core.cache import cache

class RegistrationQuerySet(models.QuerySet):

    def active_period(self):
        try:
            active_period = cache.get('active_period')
            if not active_period:
                active_period = AcademicPeriod.objects.is_active()[0]
                cache.set('active_period', active_period)
            return self.filter(academic_period=active_period)
        except:
            return self