Comment

Gord

We use something like the following when migration data containing fields that have auto_now or auto_now_add:

#Hack must override the pre_save to get touched to update correctly.
def no_touch_pre_save(self, model_instance, add):
return super(models.fields.DateField, self).pre_save(model_instance, add)
#End override touched.

def no_auto_add(fn):
"""
Hack django to not update touched - used for migrations.
"""
def _no_auto_add(*args, **kwargs):
#Force users to be explicit in this method about touched fields.
old_pre_save = models.fields.DateField.pre_save
models.fields.DateField.pre_save = no_touch_pre_save

#Call fn
ret = fn(*args, **kwargs)

#Revert to old skool pre_save in case.
models.fields.DateField.pre_save = old_pre_save
return ret
return _no_auto_add