我需要创建一个系统,其中用户必须每隔“ x”天数更改一次密码。通过保存代表用户创建/修改密码时间的UTC时间戳,我设法实现了这一目标。
我的问题是,不是通过将时间戳保存在数据库中,而是可以通过django的一些内置函数来获取表示字段更改时间的时间戳?这样,我可以访问用户上次更新密码的时间,而不必在模型中添加专用字段以在其中保存时间戳。
答案 0 :(得分:0)
否,没有字段显示您在哪个时间更新了哪个字段,您应该自行实现
您应该在各处使用set_password
来管理更新密码时间
password_updated_at = models.DateTimeField(_('password updated at'))
def set_password(self, raw_password):
r = super(User, self).set_password(raw_password=raw_password)
self.password_updated_at = timezone.now()
self.save()
return r
def is_password_updated_at_expired(self):
duration = (timezone.now() - self.password_updated_at).total_seconds()
return duration > settings.PASSWORD_UPDATE_EXPIRE_TIME, duration