Как вычесть пользовательскую дату в models.DateField из now()?
Я все еще не могу найти работающее решение, поэтому я решил написать свой первый пост. Обратите внимание, я новичок в Django. Создаю портал, который отображает дни с момента верификации пользователя.
Я протестировал свою модель без использования пользовательского DateField (verified_since), только с date_joined, и он работает правильно - показывает количество оставшихся дней (я отсчитываю от 365 дней, високосный год меня пока не волнует) с момента регистрации пользователя в базе данных по сравнению с сегодняшним днем.
class Profile(models.Model):
verified_since = models.DateField(default=now)
@property
def ver_since(self):
return 365 - (now() - self.user.date_joined).days
Теперь, если я использую verified_since вместо date_joined, я получаю ошибку. Я подозреваю, что это связано с другим форматом даты, или, возможно, с форматом строки вместо даты, которая не может быть вычтена из datetime.now()
verified_since - это дата, введенная пользователем на форме вручную.
class Profile(models.Model):
verified_since = models.DateField(default=now)
@property
def ver_since(self):
return 365 - (now() - self.user.verified_since).days
Здесь настройки:
TIME_ZONE = 'CET'
USE_I18N = True
USE_L10N = False
USE_TZ = True
TIME_INPUT_FORMATS = ('%H:%M',)
DATE_INPUT_FORMATS = ['%d/%m/%Y']
datetime.now() дает вам объект datetime, в то время как ваше 'verified_since' является полем даты. Поэтому просто преобразуйте текущее время в дату.
>>> verified_since
datetime.date(2022, 4, 8)
>>> datetime.now().date()
datetime.date(2022, 4, 12)
>>> 365 - (datetime.now().date() - verified_since).days
361
PS: Я не знаю, для чего нужен ver_since, но, логически рассуждая, это точно не "verified since - in days"