我有一个基于数据库查询设置的变量(它大约每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
答案 0 :(得分:1)
请查看有关Database access optimisation或caching 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