代码之家  ›  专栏  ›  技术社区  ›  Ta.Da

访问字段更新的时间(Django模型)

  •  1
  • Ta.Da  · 技术社区  · 7 年前

    我需要创建一个系统,用户必须每隔“x”天更改密码。我通过保存一个表示用户创建/修改密码时间的UTC时间戳来实现这一点。

    我的问题是,不将时间戳保存在数据库中,是否可以通过Django的一些内置函数获取表示字段更改时间的时间戳?这样我就可以访问用户上次更新密码的时间,而无需在模型中添加专用字段来保存时间戳。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mohammad Efazati    7 年前

    不,没有一个字段向您显示哪个字段在哪个时间更新,您应该自己实现它

    你应该使用 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
    
    推荐文章