dam*_*mon 71 python django django-models
我有一个具有日期时间字段的模型:
date = models.DateField(_("Date"), default=datetime.now())
当我在内置的django admin中检查应用程序时,DateField也会附加时间,因此如果您尝试保存它,则会返回错误.如何使默认日期成为日期?(datetime.today()也不起作用)
Dan*_*man 134
这就是为什么你应该总是导入基本datetime
模块:import datetime
而不是该datetime
模块中的类:from datetime import datetime
.
你犯的另一个错误就是实际调用默认的函数()
.这意味着所有模型都将在首次定义类时获取日期- 因此,如果您的服务器在不重新启动Apache的情况下保持数天或数周,则所有元素将与初始日期相同.
所以该领域应该是:
import datetime
date = models.DateField(_("Date"), default=datetime.date.today)
Run Code Online (Sandbox Code Playgroud)
Eri*_*arr 31
你错了是使用datetime模块而不是date模块.你打算这样做:
from datetime import date
date = models.DateField(_("Date"), default=date.today)
Run Code Online (Sandbox Code Playgroud)
如果您只想捕获当前日期,处理此问题的正确方法是使用auto_now_add参数:
date = models.DateField(_("Date"), auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
但是,modelfield文档明确指出auto_now_add和auto_now将始终使用当前日期,并且不是您可以覆盖的默认值.
小智 8
date = models.DateTimeField(default=datetime.now, blank=True)
Run Code Online (Sandbox Code Playgroud)
我认为解决这个问题的更好方法是使用 datetime 可调用:
from datetime import datetime
date = models.DateField(default=datetime.now)
Run Code Online (Sandbox Code Playgroud)
请注意,没有使用括号。如果您使用括号,您将只调用now()
一次该函数(在创建模型时)。相反,您将 callable 作为参数传递,从而在每次创建模型实例时调用。
感谢Django的沉思。我已经使用它并且工作正常。
这应该可以解决问题:
models.DateTimeField(_("Date"), auto_now_add = True)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
125860 次 |
最近记录: |