Как получить время первого входа пользователя и время последнего выхода из системы, каждый день?
все пользователи входят в систему и выходят из нее определенное количество раз, каждый раз дататайм сохраняется в базе данных, но мне нужно ежедневное время первого входа и последнего выхода каждого пользователя?
models.py
class AllLogout(models.Model):
user = models.ForeignKey(Account,on_delete= models.CASCADE)
login_time = models.DateTimeField(null=True)
logout_time = models.DateTimeField(null=True)
def __str__(self):
return str(self.user) + ': ' + str(self.logout_time)
views.py
Это моя функция представления
@login_required(login_url='login')
@allowed_users(allowed_roles=['Manager', 'Admin'])
def welcome(request):
# list of agent ids im getting
data1 = Account.objects.filter(Role='Agent').values_list('id', flat=True)
startdate = date.today()
enddate = startdate + timedelta(days=5)
some_day_last_week = timezone.now().date() - timedelta(days=7)
res = []
for agentname in data1:
agentdata = AllLogout.objects.filter(user_id=agentname).filter(login_time__range=[startdate,enddate])
agentdata = AllLogout.objects.filter(user_id=agentname).values('logout_time')
res.append(agentdata)
print(agentdata)
lasttime = []
for agentname in data1:
agentdatalast = AllLogout.objects.filter(user_id=agentname).filter(logout_time__range=[startdate,enddate]).last()
lasttime.append(agentdatalast)
zippedList = zip(res, lasttime)
return render(request, 'all_adminhtmlpages/welcome.html', {'zippedList': zippedList})
Это может помочь вам
Дело входа
Случай №1: Пользователь вошел в систему впервые в определенный день
- Создайте объекты AllLogout для этого дня с мачтами
login_time
иlogout_time
какnull
.
Случай#2: Пользователь вошел второй раз в тот же день
- Фильтр AllLogout если объекты доступны то
pass
Выйти из дела
- Отфильтровать все объекты AllLogout за этот день, если
logout_time
равноnull
, то обновить с меткой текущего времени, а еслиlogout_time
равноnot null
, то обновить, затем сделать то же самое .