【问题标题】:django - how to save(update) datetime field to databasedjango - 如何将日期时间字段保存(更新)到数据库
【发布时间】:2018-05-20 15:32:08
【问题描述】:

我在使用 Django DateTimeField 时遇到了一些问题。当某些情况发生时,我希望我的脚本在数据库中的 expiration_date 字段中添加 7 天。

models.py

class TrainingPlan(models.Model):
    user = models.OneToOneField(User, on_delete='CASCADE')
    exercise_list = models.ManyToManyField(Exercise)
    expiration_date = models.DateTimeField(default=datetime.now(timezone.utc))
    reps = models.PositiveIntegerField(default=10)

views.py

 def check_plan_expiration_date():
    user_exp_date = user_trainingplan.expiration_date
    now = datetime.now(timezone.utc)
    if user_exp_date <= now:
        user_exp_date = datetime.now(timezone.utc)+timedelta(days=7)
        user_exp_date.save()
    else:
        return user_exp_date

我得到的错误: 'datetime.datetime' 对象没有属性 'save'

【问题讨论】:

    标签: django python-3.x django-models django-views python-datetime


    【解决方案1】:

    使用模型

    def check_plan_expiration_date():
    
        now = datetime.now(timezone.utc)
        if user_trainingplan.expiration_date <= now:
            user_trainingplan.expiration_date = datetime.now(timezone.utc)+timedelta(days=7)
            user_trainingplan.save()
        else:
            return user_trainingplan.expiration_date
    

    【讨论】:

      【解决方案2】:

      您在错误的对象/变量上调用 save() 方法。您想将新的user_exp_date 设置为user_trainingplan.expiration_date 属性并调用user_trainingplan.save()

      def check_plan_expiration_date():
          user_exp_date = user_trainingplan.expiration_date
          now = datetime.now(timezone.utc)
          if user_exp_date <= now:
              user_trainingplan.expiration_date = datetime.now(timezone.utc)+timedelta(days=7)
              user_trainingplan.save()
          else:
              return user_exp_date
      

      【讨论】:

        猜你喜欢
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-02
        • 2019-02-26
        • 2011-12-19
        • 1970-01-01
        相关资源
        最近更新 更多