如果我的日志级别设置为INFO,则以下两行都将导致仍然评估查询集,即使数据未打印:
logger.debug("Count is %s"%Widget.objects.count())
logger.debug("Count is %s", Widget.objects.count())
有没有办法避免这种情况?
答案 0 :(得分:2)
我在这里找到了答案:
https://stackoverflow.com/a/4149190/390973
class Lazy(object):
def __init__(self,func):
self.func=func
def __str__(self):
return self.func()
logger.debug(Lazy(lambda: "Count is %s"%Widget.objects.count()))
答案 1 :(得分:0)
唯一的方法是将值存储在变量
中obj_count = Widget.objects.count()
logger.debug("Count is %d"% obj_count)
logger.debug("Count is %d", obj_count)