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

Class 'Aluno' has no 'objects' member

Olá. No meu código, em views.py, está aparecendo os seguintes erros: "Class 'Aluno' has no 'objects' member " e "Class 'Curso' has no 'objects' member". A aplicação está funcionando corretamente, mas gostaria de saber como posso resolver esse erro.

#views.py
from rest_framework import viewsets
from escola.models import Aluno, Curso
from escola.serializer import AlunoSerializer, CursoSerializer #coloquei o escola. pq nao estava indo sem ele

class AlunosViewSet(viewsets.ModelViewSet):
    """Exibindo todos os alunos e alunas"""
    queryset = Aluno.objects.all()
    serializer_class = AlunoSerializer

class CursosViewSet(viewsets.ModelViewSet):
    """Exibindo todos os cursos"""
    queryset = Curso.objects.all()
    serializer_class = CursoSerializer
#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
#serializer.py
from rest_framework import serializers
from escola.models import Aluno, Curso

class AlunoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Aluno
        fields = ['id', 'nome', 'rg', 'cpf', 'data_nascimento']

class CursoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Curso
        fields = '__all__'
2 respostas
solução!

Oi Amanda, tudo bem?

Isso não é um erro, é apenas um aviso do Visual Studio Code. Como o django abstrai muita coisa, fica difícil para o vscode entender que aquelas classes estão de fato registradas, então ele alerta sobre um possível erro.

Algo que pode tentar é:

  • Nos modelos (models.py), acrescentar na classe o seguinte código: objects = models.Manager()

Outra possível solução é instalar o pylint do django. Abra o terminal e dentro do ambiente virtual digite:

pip install pylint-django

Agora, vá até as configurações do vscode: arquivo -> preferências -> configuração -> abra o arquivo settings.json (na tela de configurações, no canto superior direito terá um ícone com uma pastinha e uma seta para abrir esse o arquivo settings.json):

image

Quando abrir esse arquivo, vá até a última configuração do arquivo, coloque uma vírgula e logo embaixo cole o seguinte trecho:

"python.linting.pylintArgs": [
        "--load-plugins=pylint_django"
],

Faça o restart do vscode code e veja irá persistir os alertas.

Qualquer dúvida estou por aqui.

Abraços!

Muito obrigada. Adicionei objects = models.Manager() no models.py e funcionou.