【发布时间】:2011-11-21 22:07:00
【问题描述】:
我有一个这样的模型:
class FooBar(models.Model):
createtime = models.DateTimeField(auto_now_add=True)
lastupdatetime = models.DateTimeField(auto_now=True)
我想覆盖某些模型实例的两个日期字段(在迁移数据时使用)。当前的解决方案如下所示:
for field in new_entry._meta.local_fields:
if field.name == "lastupdatetime":
field.auto_now = False
elif field.name == "createtime":
field.auto_now_add = False
new_entry.createtime = date
new_entry.lastupdatetime = date
new_entry.save()
for field in new_entry._meta.local_fields:
if field.name == "lastupdatetime":
field.auto_now = True
elif field.name == "createtime":
field.auto_now_add = True
有没有更好的解决方案?
【问题讨论】:
-
new_entry.createtime.auto_now = False ?
-
+1 - 这对测试来说非常好
-
@akonsu Nope: 'datetime.datetime' 对象没有属性 'auto_now'
-
值得指出的是,不少核心开发者are in favor of deprecating
auto_now(_add) -
new_entry._meta.get_field('date_update') 更直接