如何解决如何在Django模型中覆盖auto_now_add
|| 我有一个大致的模型: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()
我在这个问题中读到了有关将模型设置为类似auto_now_add= not initialize
这样的想法,以便在运行初始化脚本时auto_now_add将为false,但无法弄清楚如何将初始化变量连接至脚本。
任何人都可以向我解释如何通过这种方式或另一种方式覆盖auto_now_add字段。如果可能的话,我现在希望添加另一个模型。
解决方法
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,**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)
, 保存它,以便设置auto_now。然后,设置字段,然后再次保存。
我认为...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。