Django: Как получить первый вход пользователя в систему в течение 24 часов в django

В Django мы можем получить время последнего входа пользователя в систему с помощью Auth.User.last_login. Оно обновляется только тогда, когда пользователь входит в систему, используя свое имя пользователя/пароль.

Это было бы полезно для таких запросов, как получение количества новых записей с момента последнего посещения.

Пользователи могут выходить из системы, а также входить несколько раз за день, теперь я хочу получить первый раз, когда пользователь вошел в систему, за день и сохранить это в модели в db.

Как мне достичь этой функциональности?

Ваше поле last_login хранит только одну точку данных, т.е. последний раз, когда произошел вход в систему - если кто-то входит в систему дважды за день, вы не сможете увидеть первый вход к тому времени, когда произойдет второй. Поэтому вам нужно создать некую модель журнала, которая отслеживает время входа в систему, затем вы можете легко отфильтровать эти данные, чтобы получить первый вход в систему за день:

class UserActivity(models.Model):
   activity_type = # track whether logged in, logged out, etc.
   created_on = models.DateTimeField(...

Вам нужно будет поместить это вместе с кодом входа в систему, чтобы при успешном входе всегда создавалась активность. Затем вы можете получить первый логин следующим образом:

first_login_today = user.useractivity_set.filter(
   created_on__date=timezone.now().date()).first()
Вернуться на верх