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?
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!