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

Problema com método de classe em Django

Estou tendo um problema com os seguintes códigos:

from django.db import models

class Perfil(models.Model):

    nome = models.CharField(max_length = 300, null='False')
    nome_camisa = models.CharField(max_length = 30, null = 'True')
    n_camisa = models.IntegerField(max_length = 3, null = 'True')

    def ordena_nomes(perfis):
        nomes = []
        for perfil in perfis:
            nomes.append(perfil.nome)
        nomes.sort()
        return nomes    

    def ordena_objetos(nomes):
        objetos = []
        for nome in nomes:
            objeto = Perfil.objects.get(nome = nome)
            objetos.append(objeto)
        return objetos
from django.shortcuts import render
from perfil.models import Perfil


def index(request):
    return render(request, 'index.html')

def tabela(request):
    objetos = Perfil.objects.all()
    nomes = Perfil.orderna_nomes(objetos)
    objetos_ordenados = Perfil.ordena_objetos(nomes)
    return render(request, 'tabela.html', {'perfis': objetos_ordenados})

Quando eu rodo o servidor e abro a página na qua eu preciso retornar o Dicionário o navegador aponta que a classe Perfil não possui o atributo ordena_nomes, mesmo quando eu uso 'self' como um parâmetro. Não sei o que pode estar errado pois quado executo a mesmas sequência de comandos presentes na função de view 'tabela' no shell do Django tudo é executado normalmente.

Desde já agredeço pela colaboração

1 resposta
solução!

Oi Gabriel,

Parece que você teve um erro de digitação. Na linha

nomes = Perfil.orderna_nomes(objetos)

você colocou um r a mais. O correto seria

nomes = Perfil.ordena_nomes(objetos)