如何在模型中减去自定义日期.DateField从现在开始()



我仍然找不到一个有效的解决方案,因此我决定放弃我的第一篇文章。注意,我是Django的初学者。正在构建一个门户,该门户显示用户验证后的天数。

我测试了我的模型,而没有使用自定义DateField(verified_instance(,只使用date_joind。它运行正常,显示了剩余天数(我从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_instance而不是date_jointed,我会得到一个错误。我怀疑这是由于日期的格式不同,或者可能是字符串格式,而不是无法从datetime.now((中减去的日期

verified_instance是用户在表单上手动输入的日期。

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_instance"是一个日期字段。因此,只需将您当前的日期时间转换为日期即可。

>>> verified_since
datetime.date(2022, 4, 8)
>>> datetime.now().date()
datetime.date(2022, 4, 12)
>>> 365 - (datetime.now().date() - verified_since).days
361

附言:我不知道ver_sance是什么意思,但从逻辑上讲,它绝对不是"自"天内"起验证;