我有一个大致的模型:
class Day(models.Model):
info = models.ForeignKey("Info")
date = models.DateField(auto_now_add=True editable=True)
data = models.IntegerField()
但我想用昨天插入数据的脚本来初始化模型。该脚本调用一系列json并大致解析它们的数据:
for info in infos:
init = Day(info=info, date=datetime.date.today()+datetime.timedelta(-1), data=0)
init.save()
我在this中读到了关于将模型设置为auto_now_add= not initialize
之类的想法的问题,以便在运行初始化脚本时auto_now_add将为false但无法弄清楚如何连接initialize变量到剧本。
任何人都可以向我解释如何通过这种方式或其他方式覆盖auto_now_add字段。如果可能的话,我现在更愿意添加另一个模型。
答案 0 :(得分:2)
class TimeDeltaDateField(models.DateField):
def __init__(self, verbose_name = None, name = None, time_delta, *args, **kwargs):
self.time_delta = time_delta
super(models.DateField, self).__init__(verbose_name, name, *args, **kwargs)
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = datetime.datetime.now() + self.time_delta
setattr(model_instance, self.attname, value)
return value
else:
return super(models.DateField, self).pre_save(model_instance, add)
尝试此字段,用法在此处:
TimeDeltaNewDateField(time_delta = datetime.timedelta(-1), auto_now_add = True)
答案 1 :(得分:-5)
保存,以便设置auto_now。然后设置该字段,然后再次保存。
我想......