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

Erro

Olá pessoal? Segui o vídeo, mas estou com este problema ao tentar entrar na página principal do meu projeto:

RelatedObjectDoesNotExist at / User has no perfil. Request Method: GET Request URL: http://localhost:8000/ Django Version: 1.7.4 Exception Type: RelatedObjectDoesNotExist Exception Value:User has no perfil. Exception Location: /home/bianca/.local/lib/python2.7/site-packages/django/db/models/fields/related.py in get, line 428 Python Executable: /usr/bin/python Python Version: 2.7.12 Python Path:['/home/bianca/connectedin', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/bianca/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] Server time: Fri, 12 May 2017 14:56:51 +0000 Alguém consegue me ajudar por favor?

6 respostas

Oi Bianca!

Parece que você esta buscando um perfil por um id que não existe.

Você fez o relacionamento de Perfil com Uset?

Sim, segue a minha view e o model abaixo:

from django.shortcuts import render, redirect
from perfis.models import Perfil, Convite
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User

@login_required
def index(request):
    return render(request, 'index.html', {'perfis' : Perfil.objects.all(), 'perfil_logado' : get_perfil_logado(request) })

@login_required
def exibir(request, perfil_id):

    perfil = Perfil.objects.get(id=perfil_id)
    perfil_logado = get_perfil_logado(request)
    ja_eh_contato = perfil in perfil_logado.contatos.all()
    return render(request, 'perfil.html', { "perfil" : perfil, 'perfil_logado' : get_perfil_logado(request), "ja_eh_contato" : ja_eh_contato })

@login_required
def convidar(request, perfil_id):
    perfil_a_convidar = Perfil.objects.get(id=perfil_id)
    perfil_logado = get_perfil_logado(request)
    perfil_logado.convidar(perfil_a_convidar)
    return redirect('index')

@login_required    
def aceitar(request, convite_id):
    convite = Convite.objects.get(id=convite_id)
    convite.aceitar()
    return redirect('index')

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

model:

from django.db import models
from django.contrib.auth.models import User

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")

    @property
    def email(self):
        return self.usuario.email

    def convidar(self, perfil_convidado):
        convite = Convite(solicitante = self, convidado = perfil_convidado).save()

class Convite(models.Model):

    solicitante = models.ForeignKey(Perfil, related_name='convites_feitos')
    convidado = models.ForeignKey(Perfil, related_name='convites_recebidos')

    def aceitar(self):
        self.convidado.contatos.add(self.solicitante)
        self.solicitante.contatos.add(self.solicitante)
        self.delete()

Bianca, você adicionou as configurações de redirect indicando o caminho da url de login ?

LOGIN_URL="/login/"
LOGOUT_URL="/logout/"
LOGIN_REDIRECT_URL="/"
solução!

Olá. não sei o que aconteceu, mas copiei todo o código do texto referente ao capítulo e funcionou. Deve ter sido alguma coisa que deixei de importar. Porque esses caminhos da url fiz tudo conforme o vídeo, mas posso ter deixado passar alguma coisa na hora de fazer as importações.

Muito obrigada pela ajuda, adorei o curso está de parabéns. Estou utilizando os conhecimentos do curso no meu trabalho, sou estagiária em desenvolvimento de software e um dos projetos que estou trabalhando é em django.

Ajudou e muito o curso, parabéns, você explica muito bem.

Obrigada!

Obrigado por nos avisar que esta tudo ok, inclusive agradeço pelo feedback.

Sucesso e bom estudo, minha aula!