ログ レベルを INFO に設定すると、データが出力されなくても、次の行の両方によってクエリセットが評価されます。
logger.debug("Count is %s"%Widget.objects.count())
logger.debug("Count is %s", Widget.objects.count())
これを回避する方法はありますか?
ここで答えを見つけました:
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()))
唯一の方法は、変数に値を格納することです
obj_count = Widget.objects.count()
logger.debug("Count is %d"% obj_count)
logger.debug("Count is %d", obj_count)