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

[Dúvida] Mostrar valor na tela

Olá, tudo certo? Estou com um projeto que me manda acrescentar três tabelas para a página do meu site em django, contudo, quando eu adiciono os valores dentro da tabela não aparecem, não sei porque isso acontece... Alguém poderia me ajudar fazendo o favor? Tenho medo de não conseguir completar minha parte no trabalho a tempo...

Acabou que além das tabelas que eu acrescentei as outras que já estavam também não aparecem, mas essas eu não sei se estavam ou não já aparecendo... Irei mandar o código que eu acrescentei, ok? Penso que talvez eu tenha que mudar alguma coisa em outros arquivos além desses dois que eu alterei, mas não sei ao certo... views.py:

#Adicionado por Pedro (Diferença do número de atores entre o modelo e a execução)
def contar_numero_atores_bpmn(processo_bpmn):
    atores_processo_bpmn = processo_bpmn.ator_set.all()
    num_atores_bpmn = len(atores_processo_bpmn)
    return num_atores_bpmn

def contar_numero_atores_execucao(ordem_tramite):
    atores_execucao = set()  # Usamos um conjunto para garantir que não haja atores duplicados
    for tramite in ordem_tramite:
        atores_execucao.add(tramite.setor_envio)
        atores_execucao.add(tramite.setor_recebimento)
    num_atores_execucao = len(atores_execucao)
    return num_atores_execucao

def obter_diferenca_numeros_atores(processo_bpmn, ordem_tramite):
    num_atores_bpmn = contar_numero_atores_bpmn(processo_bpmn)
    num_atores_execucao = contar_numero_atores_execucao(ordem_tramite)
    diferenca_atores = num_atores_bpmn - num_atores_execucao
    return diferenca_atores

#Percentual de equivalência 
def calcular_percentual_equivalencia_modelo_para_execucao(processo_bpmn, ordem_tramite):
    num_atores_bpmn = contar_numero_atores_bpmn(processo_bpmn)
    num_atores_execucao = contar_numero_atores_execucao(ordem_tramite)

    #Obter os atores do modelo e da execução
    atores_processo_bpmn = set(processo_bpmn.ator_set.all())
    atores_execucao = set()
    for tramite in ordem_tramite:
        atores_execucao.add(tramite.setor_envio)
        atores_execucao.add(tramite.setor_recebimento)

    #Calcular o número de atores em comum
    num_atores_em_comum = len(atores_processo_bpmn.intersection(atores_execucao))

    #Calcular o percentual de equivalência do modelo para a execução
    percentual_equivalencia_modelo_para_execucao = (num_atores_em_comum / num_atores_bpmn) * 100
    return percentual_equivalencia_modelo_para_execucao

def calcular_percentual_equivalencia_execucao_para_modelo(processo_bpmn, ordem_tramite):
    num_atores_bpmn = contar_numero_atores_bpmn(processo_bpmn)
    num_atores_execucao = contar_numero_atores_execucao(ordem_tramite)

    #Obter os atores do modelo e da execução
    atores_processo_bpmn = set(processo_bpmn.ator_set.all())
    atores_execucao = set()
    for tramite in ordem_tramite:
        atores_execucao.add(tramite.setor_envio)
        atores_execucao.add(tramite.setor_recebimento)

    #Calcular o número de atores em comum
    num_atores_em_comum = len(atores_processo_bpmn.intersection(atores_execucao))

    #Calcular o percentual de equivalência da execução para o modelo
    percentual_equivalencia_execucao_para_modelo = (num_atores_em_comum / num_atores_execucao) * 100
    return percentual_equivalencia_execucao_para_modelo
    

Agora o meu comparar_bpmn_tramite.html

<!-- Nova tabela -->
<div class="mt-5">
    <table class="table table-striped table-bordered" style="width:100%">
        <thead>
            <tr>
                <th>Diferença do número de atores entre o modelo e a execução</th>
                <th>Percentual de equivalência dos atores do modelo para a execução</th>
                <th>Percentual de equivalência dos atores da execução para o modelo</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>{{ diferenca_atores }}</td>
                <td>{{ percentual_modelo_para_execucao }}</td>
                <td>{{ percentual_execucao_para_modelo }}</td>
            </tr>
        </tbody>
    </table>
</div>
<!-- Fim da nova tabela -->

Fica assim no django: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Pedro! Tudo bem com você.

Peço desculpa pela demora em lhe responder.

A primeira coisa que precisamos garantir é que essas funções estão sendo chamadas e os resultados estão sendo passados para o template. No Django, isso é geralmente feito na função de view que renderiza o template.

Se você já fez isso e os valores ainda não estão aparecendo, pode ser que as funções estejam retornando None ou algum outro valor que não é exibido. Você pode adicionar alguns print nas funções para ver o que elas estão retornando e se certificar de que estão funcionando como esperado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software