220 votes

La classe n'a pas d'objet membre

def index(request):
   latest_question_list = Question.objects.all().order_by('-pub_date')[:5]
   template = loader.get_template('polls/index.html')
   context = {'latest_question_list':latest_question_list}
   return HttpResponse(template.render(context, request))

La première ligne de cette fonction obtient une erreur sur la Question.objets.tous les() -->E1101: Classe la Question de l'has no objectsmembre"

Im suivant la documentation de Django tutoriel et ils ont le même code et en cours d'exécution.

J'ai essayé d'appeler une instance.

Question = new Question()
and using MyModel.objects.all()

Aussi mon models.py le code de cette classe, est-ce...

class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published') 

def was_published_recently(self):
    return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

def __str__(self):
    return self.question_text

En vain j'ai encore cette erreur.

J'ai lu sur pylint et de l'exécution de cette...

pylint --load-plugins pylint_django

Ce qui n'aidait pas, même quand le github fichier readme dit...

Empêche les mises en garde à propos de Django générés par des attributs tels que De modèle.des objets ou des points de Vue.demande.

J'ai exécuté la commande dans mon virtualenv, et pourtant rien.

De sorte que toute aide serait super

424voto

tieuminh2510 Points 2321

Installez pylint-django utilisant pip comme suit

 pip install pylint-django
 

Ensuite, dans Visual Studio Code, allez à: Paramètres utilisateur ( Ctrl + , ou Fichier> Préférences> Paramètres si disponibles) Indiquez ce qui suit (veuillez noter les accolades requises pour les paramètres utilisateur personnalisés dans VSC):

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

161voto

FightWithCode Points 570

@tieuminh2510 réponse est parfait. Mais dans les nouvelles versions de la VSC vous ne trouverez pas la possibilité de les modifier ou de coller cette commande dans les Paramètres de l'Utilisateur. Maintenant dans une version plus récente d' ajouter ce code à suivre cette procédure :

Appuyez sur ctrl+sft+P pour ouvrir la Palette de Commande. Maintenant dans la commande type de palette Préférences: Configurer la Langue des Paramètres Spécifiques. Maintenant, sélectionnez Python. Ici, dans le côté droit de coller ce code

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

L'intérieur de la première accolades. Assurez-vous que pylint-django.

Espérons que cela va aider!

40voto

J'ai essayé toutes les solutions proposées mais unluckly mon vscode paramètres ne sont pas changé ses linter chemin. Donc, je tride à explorer vscode paramètres dans paramètres > Réglages Utilisateur > python. Trouver Peluchage: Pylint Chemin et de le modifier pour "pylint_django". N'oubliez pas de changer le linter à "pylint_django" à réglages > Réglages Utilisateur > python configuration de "pyLint" à "pylint_django".

Linter Path Edit

32voto

buuencrypted Points 613

Heres la réponse. Obtenu à partir de mon post reddit... https://www.reddit.com/r/django/comments/6nq0bq/class_question_has_no_objects_member/

Ce n'est pas une erreur, c'est juste un avertissement de VSC. Django ajoute que propriété de façon dynamique à toutes les classes de modèle (il utilise beaucoup de magie sous le capot), de sorte que l'IDE n'est pas le savoir en regardant le déclaration de la classe, de sorte qu'il vous met en garde contre une possible erreur (il n'est pas). objets est en fait une instance du Gestionnaire qui aide à l'interrogation de la bd. Si vous voulez vraiment vous débarrasser de cet avertissement, vous pouvez aller à tous vos modèles et ajouter des objets = modèles.Gestionnaire() Maintenant, VSC va voir la des objets déclarés et ne va pas s'en plaindre à nouveau.

14voto

moth Points 175

Vous pouvez modifier le linter pour l'extension Python pour Visual Studio Code.

Dans VS, ouvrez la palette de commandes Ctrl + Maj + P et tapez l’une des commandes suivantes:

Python: Sélectionnez Linter

lorsque vous sélectionnez un linter, il sera installé. J'ai essayé flake8 et il semble que le problème soit résolu pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X