django - как сохранить (обновить) поле даты и времени в базе данных - PullRequest
0 голосов
/ 20 мая 2018

У меня проблемы с Django DateTimeField.Я хочу, чтобы мой сценарий добавлял 7 дней в поле expiration_date в базе данных при возникновении некоторых условий.

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'

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вы вызываете метод 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
0 голосов
/ 20 мая 2018

Работа с моделью

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
...