我正在将我的项目从Django 1.8.2升级到1.9.7的过程中,但是我遇到了这个警告:
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: 预期字符串或缓冲区
根据需要添加/删除括号可以使这两个工作正常,但timezone.now()
和timezone.now
之间有什么区别,并且为什么它们在这些情况下会导致警告或错误?