正如标题所暗示的那样.我想在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()

希望这能帮上忙!

Django相关问答推荐

Django-将html数据保存到quillfield中

如何在 Django 中设置与 Session 相关的字段

有谁知道是否可以将您的 Django Heroku 应用程序放到 App Store/Google Play 上?

在 Django 模板中分页时如何正确显示与其父模型字段关联的所有内联字段?

如果一个应用程序有多个具有相同字段的模型,那么保持 DRY 的最佳实践是什么?

使用 Python/Django 上传大文件

一个简单的Django和CSS示例

将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

Django聚合:仅求和返回值?

使用基于日期/时间的对象进行 Django 单元测试

使用 Gunicorn 运行 Django - 最佳实践

在 Django 中注册用户的最佳方法

从表单获取模型实例而不保存

Python Django:您正在使用 staticfiles 应用程序而没有设置 STATIC_ROOT 设置

使用 Django 部署 Google Analytics

get_or_create() 是否必须立即保存?

Django unique_together 与可为空的 ForeignKey

您如何在本地针对 OpenID 进行开发

警告:找不到分发的 svn 位置==0.6.16dev-r0

过滤查询参数