正如标题所暗示的那样.我想在DateField
字段中增加30天.这是在使用auto_now_add=True
创建记录时自动填充的
有什么 idea 可以开始做这件事吗?
谢谢
正如标题所暗示的那样.我想在DateField
字段中增加30天.这是在使用auto_now_add=True
创建记录时自动填充的
有什么 idea 可以开始做这件事吗?
谢谢
// Update个
原帖下面的 comments 让我深思.我想这是到目前为止最好的解决方案:
from datetime import datetime, timedelta
class MyModel(models.Model):
mydate = models.DateTimeField(default=datetime.now()+timedelta(days=30))
// 2. Update个
如果您想定义一个保存应该添加的天数的模型属性,您将需要覆盖save方法.到目前为止,我想不出一个更简单的方法.
解决方案:
class MyModel(models.Model):
mydate = models.DateTimeField(editable=False)
daysadded = models.IntegerField()
def save(self):
from datetime import datetime, timedelta
d = timedelta(days=self.daysadded)
if not self.id:
self.mydate = datetime.now() + d
super(MyModel, self).save()
正如beadingGuru已经建议的那样,您应该覆盖您的模型保存方法.
Example:
class MyModel(models.Model):
mydate = models.DateTimeField(auto_now_add=True)
def save(self):
from datetime import timedelta
d = timedelta(days=30)
// only add 30 days if it's the first time the model is saved
if not self.id:
// not saving the model before adding the timedelta gave me errors
super(MyModel, self).save()
self.mydate += d
// final save
super(MyModel, self).save()
这对我来说不是最好的方式,因为你必须保存模型两次.但是使用AUTO_NOW_ADD要求您在创建myDate的DateTime实例之前首先保存模型.
另一种只需要一次保存的方法:
class MyModel(models.Model):
mydate = models.DateTimeField(editable=False) // editable=False to hide in admin
def save(self):
from datetime import datetime, timedelta
d = timedelta(days=30)
// only add 30 days if it's the first time the model is saved
if not self.id:
self.mydate = datetime.now() + d
super(MyModel, self).save()
希望这能帮上忙!