Django admin users timein и timeout пользователя

Здравствуйте, я новичок в 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)

для этого можно использовать сигналы входа и выхода: user_logged_in, user_logged_out и user_login_failed. Документация

Вот пример использования (добавьте их к своим моделям):

@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()

Это действует как функция "Watcher", которая срабатывает, когда пользователь входит в систему. Аналогично для выхода из системы.

Вернуться на верх