Временно отключите auto_now / auto_now_add

У меня есть такая модель:

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

Есть ли лучшее решение?

91
задан Shawn Chin 21 September 2011 в 14:29
поделиться