【发布时间】:2019-02-20 03:25:24
【问题描述】:
我正在使用 5 - 6 个自定义模板标签。
每一个都类似于以下内容:
@register.filter(name = 'time_left')
def time_left(obj):
if not obj:
return -1
if not obj.has_offer_expired():
return obj.time_left()
return None
我的models.py有这个:
def has_offer_expired(self):
return self.end_time <= timezone.now()
def time_left(self):
return int((self.end_time - timezone.now()).total_seconds())
每当使用模板标签{{ offer | time_left }}时,会不会引起数据库查询?或者,offer 被传递给模板标签函数并使用它的属性而不引起任何额外的 db 查询?
非常感谢模板标签在幕后工作的详细说明!
谢谢。
编辑:请在否决问题前添加理由!
【问题讨论】:
-
他们为什么会引起数据库查询?如果
offer已经被获取,那么不会。但是,如果offer包含属性等。延迟加载,它将像任何其他查询一样工作,从而获取相关对象。 -
offer已获取所有属性。谢谢!
标签: django django-models django-database django-template-filters