Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como transformar um set em queryset?

Olá! Por favor, preciso de ajuda!

Quando eu executo esse código

In [1]: qs = Cupons.objects.delivery().filter(created__gt
   ...: e=datetime(2020,8, 11))                       

In [2]: set(qs)  

Eu tomo um erro de timeout: QueryCanceled: canceling statement due to statement timeout

e

OperationalError: canceling statement due to statement timeout

Sendo assim, eu tenho um outro exemplo:

def filter_cupons_por_notas(fatura):
    fatura_sem_notas = fatura.filter(cupons__isnull=True).values_list('id', flat=True)

    fatura_com_falha_cupons = fatura.filter(
        cupons__status__in=CUPOM_STATUS_DE_FALHA
    ).values_list('id', flat=True)

    fatura_com_sucesso_ou_processando_cupons = fatura.filter(
        cupons__status__in=[CUPONS_SUCESSO, CUPONS_PROCESSANDO]
    ).values_list('id', flat=True)

    fatura_sem_valido_cupons = \
        set(fatura_com_falha_cupons) - set(fatura_com_sucesso_ou_processando_cupons)

    return set(ichain(fatura_sem_notas, fatura_sem_valido_cupons))

Nessa parte em específico:

set(fatura_com_sucesso_ou_processando_cupons)

    return set(ichain(fatura_sem_notas, fatura_sem_valido_cupons)

Eu gostaria de substituir o set por queryset para evitar ter timeout. Agradeço a ajuda!

1 resposta
solução!

Oii Yara, como vai? Espero que esteja bem ^-^

Peço perdão pela demora em obter um retorno.

Me responde uma coisa, por gentileza: a ideia de você retornar em set nesse código é para evitar valores repetidos?

Fico no aguardo.