Problems with Count method in a Django queryset

Asked

Viewed 30 times

1

I’m in a strange situation with Django and Count method, I have a queryset that I called ranges and then I have a variable qtd_intervalo where I store the intervalos.count() then I do the tests:

if qtd_intervalo > 1:
if qtd_intervalo ==1:

        qtd_intervalos = intervalos.count()
        if qtd_intervalos > 1:
            #se existem intervalos em aberto então eu irei finalizalos e pronto
            intervalos.update(finalizada = True,data_finalizacao = agora,data_final=agora,usuario_edicao = usuario)
            _horario_final = "{0}:{1}".format(agora.hour,agora.minute)
            usuario.flags['em_trabalho'] = True
            usuario.flags['em_intervalo'] = False
            usuario.save()
            _html = _FECHAR_PONTO + _ABRIR_INTERVALO
            return {"sucesso":True,'html':_html,
                    "mensagem":"Foram finalizados {0} intervalos às {1}".format(qtd_intervalos,_horario_final)}
        elif qtd_intervalos == 1:
            _hora_inicio = intervalos[0].data_inicial
            _horario_inicio = "{0}:{1}".format(_hora_inicio.hour,_hora_inicio.minute)
            _horario_final = "{0}:{1}".format(agora.hour,agora.minute)
            intervalos.update(finalizada = True,data_finalizacao = agora,data_final=agora,usuario_edicao = usuario)
            usuario.flags['em_trabalho'] = True
            usuario.flags['em_intervalo'] = False
            usuario.save()
            _html = _FECHAR_PONTO + _ABRIR_INTERVALO
            return {"sucesso":True,'html':_html,
                    "mensagem":"Foi finalizado o intervalo aberto em {0} às {1}".format(_horario_inicio,_horario_final)}
        else:
            intervalo = Calendario(dependencia = calendario_ponto,usuario = usuario)
            _data_final = agora + relativedelta(minutes=30)
            nome = "Intervalo de {0}".format(usuario)
            descricao = "Intervalo: {0}".format(agora)
            flags = {'cancelada':False,'lida':False,
                'situacao_finalizacao':{"status":"aguardando início",'cor':'gray','icone':"fa fa-hourglass-o fa-2x",
                                        'icone_normal':"fa fa-hourglass-o",'estilo':'default',},
                'percentual':0,"ponto":True,"intervalo":True,"em_servico":False}

etc..

But time or again inside this if I get the bug:

File "/home/caaorg/caaorg/institutional/models.py" in open_close 4374. _hora_inicio = intervals[0]. starting date_initial

File "/home/caaorg/virtual-caaorg/lib/python3.7/site-Packages/Django/db/models/query.py" in getitem 309. Return Qs. _result_cache[0]

Exception Type: Indexerror at /accounting/change-status-my-range/ Exception Value: list index out of range

Which makes no sense because I checked earlier if the amount of items in queryset is greater than zero...

Django 2.2.16 and python 3.7

Does anyone have any idea what this might be?

  • I didn’t see in your code where it’s initialized intervalos, you could update your post?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.