Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

RelatedObjectDoesNotExist at / user has no loginusuario ou - user has no perfil

Pessoal, bom dia.

Fiz o curso, e, estou criando um sistema,com base no curso. No ponto em que, na minha classe (no exemplo do curso, classe PERFIL), eu crio uma relação OneToOne com User (atributo usuario, related_name='perfil'), me apareceu um erro ao realizar o Login:

RelatedObjectDoesNotExist at / user has no loginusuario, ou, user has no perfil

Classe Perfil:

class Perfil(models.Model):
    nome = models.CharField(max_length=255, null=False)
    telefone = models.CharField(max_length=15, null=False)
    nome_empresa = models.CharField(max_length=255, null=False)
    contatos = models.ManyToManyField('self')
    usuario = models.OneToOneField(User, related_name='perfil')

Função que retorna o usuário logado:


@login_required
def get_perfil_logado(request):
    return request.user.perfil

SOLUÇÃO:

Revirei meu código, vi e revi várias vezes o curso (não sou da área de desenv Web, hoje atuo como ATG/DBA) e, prestando melhor atenção na mensagem, saí um pouco da questão da orientação à objeto e, vendo que a Classe estava ok, qual era o erro?

  • 1) Cadastrei via /admin, o usuário admin.
  • 2) Não cadastrei sua relação na tabela criada de Perfil
  • Nesse caso, a solução era: FAZER O INSERT NA TABELA, e não algum problema nas Classes (a questão era no BD, no caso MySQL).

    Fiz o cadastro de um PERFIL (pois já tinha criado o Admin via createsuperuser) e, logo após o login foi realizado com sucesso.

    Fica ai como Dica!

    Forte Abraço,

    Trevisolli

    2 respostas
    solução!

    A pergunta foi solucionada inserindo linha na tabela Perfil, fazendo com que a Relação de um-para-um ficasse correta, com registros em ambas as entidades: auth_user e Perfil.

    O que precisar pode abrir uma nova dúvida :D