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

BD não está sincronizando - Django3

python3 manage.py migrate                                                                                        1 ↵
SystemCheckError: System check identified some issues:

ERRORS:
<class 'loja.admin.Matriculas'>: (admin.E108) The value of 'list_display[1]' refers to 'aluno', which is not a callable, an attribute of 'Matriculas', or an attribute or method on 'loja.Matricula'.
<class 'loja.admin.Matriculas'>: (admin.E108) The value of 'list_display[2]' refers to 'curso', which is not a callable, an attribute of 'Matriculas', or an attribute or method on 'loja.Matricula'.

Models.py -

from django.db import models

class Cliente(models.Model):
    id = models.IntegerField
    nome = models.CharField(max_length=30)
    email = models.CharField(max_length=100)
    cpf = models.CharField(max_length=11)
    telefone = models.CharField(max_length=15)
    endereco = models.CharField(max_length=190)

    def __str__(self):
        return self.nome

class Produto(models.Model):
    NIVEL = (
        ('C', 'Coleção'),
        ('P', 'Promoção'),
        ('D', 'Desconto')
    )
    codigo_Produto = models.CharField(max_length=10)
    descricao = models.CharField(max_length=300)
    titulo = models.CharField(max_length=250)
    nivel = models.CharField(max_length=1, choices=NIVEL, blank=False, null=False,default='C')

    def __str__(self):
        return self.descricao

class Matricula(models.Model):
    PERIODO = (
        ('M', 'Matutino'),
        ('V', 'Vespertino'),
        ('N', 'Noturno')
    )
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE)
    produto = models.ForeignKey(Produto, on_delete=models.CASCADE)
    periodo = models.CharField(max_length=1, choices=PERIODO, blank=False, null=False,default='M')

views.py

from rest_framework import viewsets, generics
from loja.models import Cliente, Produto, Matricula
from loja.serializer import ClienteSerializer, ProdutoSerializer, MatriculaSerializer, ListaMatriculasClienteSerializer, ListaClientesMatriculadosSerializer
from rest_framework.authentication import BasicAuthentication
from rest_framework.permissions import IsAuthenticated

class ClientesViewSet(viewsets.ModelViewSet):
    """Exibindo todos os Clientes e alunas"""
    queryset = Cliente.objects.all()
    serializer_class = ClienteSerializer
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

class ProdutosViewSet(viewsets.ModelViewSet):
    """Exibindo todos os Produtos"""
    queryset = Produto.objects.all()
    serializer_class = ProdutoSerializer
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

class MatriculaViewSet(viewsets.ModelViewSet):
    """Listando todas as matrículas"""
    queryset = Matricula.objects.all()
    serializer_class = MatriculaSerializer
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

class ListaMatriculasCliente(generics.ListAPIView):
    """Listando as matrículas de um Cliente ou aluna"""
    def get_queryset(self):
        queryset = Matricula.objects.filter(Cliente_id=self.kwargs['pk'])
        return queryset
    serializer_class = ListaMatriculasClienteSerializer
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

class ListaClientesMatriculados(generics.ListAPIView):
    """Listando Clientes e alunas Matriculados em um Produto"""
    def get_queryset(self):
        queryset = Matricula.objects.filter(Produto_id=self.kwargs['pk'])
        return queryset
    serializer_class = ListaClientesMatriculadosSerializer
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

admin.py

from django.contrib import admin
from loja.models import Cliente, Produto, Matricula

class Clientes(admin.ModelAdmin):
    list_display = ('id', 'nome', 'email', 'cpf', 'telefone', 'endereco')
    list_display_links = ('id', 'nome')
    search_fields = ('nome',)
    list_per_page = 20

admin.site.register(Cliente, Clientes)

class Produtos(admin.ModelAdmin):
    list_display = ('id', 'titulo', 'codigo_Produto', 'descricao')
    list_display_links = ('id', 'codigo_Produto')
    search_fields = ('codigo_Produto',)

admin.site.register(Produto, Produtos)

class Matriculas(admin.ModelAdmin):
    list_display = ('id', 'aluno', 'curso', 'periodo')
    list_display_links = ('id', )

admin.site.register(Matricula, Matriculas)`
1 resposta
solução!

Olá, Isaque! Tudo bem com você?

Peço desculpa pela demora em responder o seu tópico.

Pelo erro apresentado, parece que há um problema na definição do list_display na classe Matriculas em admin.py. O erro indica que os atributos aluno e curso não são chamáveis ou não são atributos, ou métodos em loja.Matricula.

Verifique se os nomes dos atributos estão corretos e se eles são chamáveis. Por exemplo, se aluno e curso são campos relacionais, você precisa especificar o atributo correto para exibi-los na lista.

Espero que isso ajude! Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software