Boa noite!
Está aparecendo um NameError:
admin.py", line 23, in <module>
admin.site.register(Matricula, Matriculas)
NameError: name 'Matricula' is not defined. Did you
mean: 'Matriculas'?Alguém pode ajudar?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite!
Está aparecendo um NameError:
admin.py", line 23, in <module>
admin.site.register(Matricula, Matriculas)
NameError: name 'Matricula' is not defined. Did you
mean: 'Matriculas'?Alguém pode ajudar?
Segue meu models.py:
from django.db import models
class Aluno(models.Model):
nome = models.CharField(max_length=30)
rg = models.CharField(max_length=9)
cpf = models.CharField(max_length=11)
data_nascimento = models.DateField()
def __str__(self):
return self.nome
class Curso(models.Model):
NIVEL = (
('B', 'Básico'),
('I', 'Intermediário'),
('A', 'Avançado')
)
codigo_curso = models.CharField(max_length=10)
descricao = models.CharField(max_length=100)
nivel = models.CharField(max_length=1, choices=NIVEL, blank=False, null=False, default='B')
def __str__(self):
return self.descricao
class Matricula(models.Model):
PERIODO = (
("M", "Matutino"),
("V", "Vespertino"),
("N", "Noturno")
)
aluno = models.ForeignKey(Aluno, on_delete=models.CASCADE)
curso = models.ForeignKey(Aluno, on_delete=models.CASCADE)
periodo = models.CharField(max_length=1, choices=PERIODO, blank=False, null=False, default="M")E meu admin.py:
from django.contrib import admin
from escola.models import Aluno, Curso, Matricula
class Alunos(admin.ModelAdmin):
list_display = ('id', 'nome', 'rg', 'cpf', 'data_nascimento')
list_display_links = ('id', 'nome')
search_fields = ('nome', )
list_per_page = 20
admin.site.register(Aluno, Alunos)
class Cursos(admin.ModelAdmin):
list_display = ('id', 'codigo_curso', 'descricao')
list_display_links = ('id', 'codigo_curso')
search_fields = ('codigo_curso', )
admin.site.register(Curso, Cursos)
class Matriculas(admin.ModelAdmin):
list_display = ('id', 'aluno', 'curso', 'periodo')
list_display_links = ('id', )
admin.site.register(Matricula, Matriculas)
Olá Chanrley, tudo bem com você?
O erro NameError: name 'Matricula' is not defined, está informando que não foi encontrado a classe modelo Matricula para realizar sua exibição no painel admin. Utilizando apenas o código disponibilizado não foi possível simular este erro.
O código possui um ponto que necessita realizar uma correção, caso não seja realizado é gerado um erro de exceção (Exception in thread django-main-thread). Abaixo deixo descrito como realizar a correção do código.
No código do arquivo models.py que foi disponibilizado na postagem, será necessário realizar uma correção na classe Matricula. Quando ocorre a declaração do atributo curso a chave estrangeira está sendo referenciada com a classe Aluno, o correto será utilizar a classe Curso. Como apresentado abaixo.
curso = models.ForeignKey(Curso, on_delete=models.CASCADE)Após a mudança, salve o arquivo models.py e inicie novamente o servidor usando o comando python manage.py runserver. Ressalto que após essa correção descrita acima, o código funcionou como esperado, não apresentando outros erros. Realizei testes e simulações utilizados seu código com os arquivos da aula.
Utilizando apenas uma parte do projeto não consegui simular o mesmo erro recebido por você, peço que compartilhe seu projeto completo, assim poderei realizar testes e simulações com todo o código.
Você pode disponibilizar a pasta compactada do seu projeto em um site de compartilhamento de arquivos (exemplo, Google Drive) e enviar na resposta desta postagem o link de compartilhamento para o projeto.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Felippe Rafael, desculpe. Marquei a solução errada como minha resposta, era para ser a sua. Quer que eu abra outro tópico pra eu fazer direito?
Oiii Chanrley, tudo bem com você?
Fico feliz em saber que o erro foi solucionado. Não será necessário criar uma postagem para corrigir o uso do "Marcar como solução". O seu retorno informando que foi solucionado é muito importante, assim as pessoas que lerem a postagem completa vão saber que a correção para o código sugerida, foi a solução para o erro.
Caso tenha novas dúvidas, pode contar sempre com o fórum da Alura.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!