我在从Django的1.8.2我的项目升级到1.9.7的过程中,我得到这样的警告:Django的:timezone.now VS timezone.now()
WARNINGS:
my_app.my_model.date_available: (fields.W161) Fixed default value provided.
HINT: It seems you set a fixed date/time/datetime value as default for this field. This may not be what you want.
If you want to have the current date as default, use `django.utils.timezone.now
这里的行从程序my_app/models.py:
from django.utils import timezone
...
class my_model(models.Model):
...
datetime_released = models.DateTimeField(default=timezone.now())
如果我删除了括号,而使用:
datetime_released = models.DateTimeField(default=timezone.now)
Django的警告消失。两者有什么区别?
在我的项目的另一个领域,我使用timezone.now()在查询集过滤器:
def date_available(self):
return self.filter(date_available__lte = timezone.now())
在这里,如果我删除括号,抛出一个错误:
TypeError: expected string or buffer
我可以通过根据需要添加/删除括号来获得这两项工作d,但timezone.now()
和timezone.now
之间的区别是什么以及它们在这些情况下为什么会导致警告/错误?
类型(now())重新运行日期时间对象。现在重新运行该方法 – gtalarico