Как получить время первого входа пользователя и время последнего выхода из системы, каждый день?

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

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, то обновить, затем сделать то же самое
  • .
Вернуться на верх