代码之家  ›  专栏  ›  技术社区  ›  Yuno

Django admin用户timein和用户超时

  •  0
  • Yuno  · 技术社区  · 2 年前

    您好,我是Django framework的新手,我只是想知道是否有可能捕获用户的超时和超时,我有一个模型,如果员工1登录Django admin,它将添加自动记录,如果用户单击注销,它将更新超时。我想要的是,每当员工登录django admin时,它都会添加记录,并在员工注销后更新记录,就像公司的每日考勤记录一样。

    class UserLogs(models.Model):
        user = models.OneToOneField(User, related_name="profile", on_delete=models.CASCADE)
        time_in = models.DateTimeField(default=now)
        time_out = models.DateTimeField(null=True, blank=True)
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Sorin Burghiu    2 年前

    您可以使用登录和注销信号:user\u logged\u in、user\u logged\u out和user\u Login\u failed signals来执行此操作。 Documentation

    下面是一个用法示例(将这些添加到您的模型中):

    @receiver(user_logged_in)
    def post_login(sender, request, user, **kwargs):
        print(f'User: {user.username} logged in')
        user.time_in = datetime.now()
        user.save()
    

    这是一个“观察者”功能,当用户登录时触发。类似于注销。