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