我在從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