python - कक्षा में कोई ऑब्जेक्ट सदस्य नहीं है




django django-views (8)

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))

उस फ़ंक्शन की पहली पंक्ति को Question.objects.all () -> E1101 पर त्रुटि मिलती है: कक्षा 'प्रश्न has no objects '

Django प्रलेखन ट्यूटोरियल के बाद Im और वे एक ही कोड ऊपर और चल रहा है।

मैंने एक उदाहरण की कोशिश की है।

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

इसके अलावा उस वर्ग के लिए मेरा मॉडल कोड है ...

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

कोई फायदा नहीं हुआ फिर भी मेरे पास यह त्रुटि है।

मैंने पाइलिंट के बारे में पढ़ा है और इसे चलाया है ...

pylint --load-plugins pylint_django

जो मदद नहीं किया, यहां तक ​​कि github readme फ़ाइल कहते हैं ...

Django द्वारा निर्मित विशेषताओं जैसे कि Model.objects या Views.request के बारे में चेतावनी देने से रोकता है।

मैंने अपने virtualenv के भीतर कमांड चलाया, और फिर भी कुछ नहीं।

तो किसी भी मदद महान होगा


@ टाईमुडीह 2510 का जवाब एकदम सही है। लेकिन वीएससी के नए संस्करणों में आपको उपयोगकर्ता सेटिंग्स में उस कमांड को संपादित करने या पेस्ट करने का विकल्प नहीं मिलेगा। अब नए संस्करण में उस कोड को जोड़ने के लिए इस चरण का पालन करें :

कमांड पैलेट खोलने के लिए ctr + sft + P दबाएं। अब कमांड पैलेट में प्राथमिकताएँ: भाषा विशिष्ट सेटिंग्स कॉन्फ़िगर करें । अब अजगर का चयन करें। यहां राइट साइड में इस कोड को पेस्ट करें

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

पहले घुंघराले ब्रेस के अंदर। सुनिश्चित करें कि pylint-django

आशा है कि यह मदद करेगा!


अपने लिंटर को बदलें - फ्लेक 8 और समस्या दूर हो जाएगी।


इस प्रकार pip का उपयोग करके pylint-django स्थापित करें

pip install pylint-django

फिर विज़ुअल स्टूडियो कोड गोटो में: उपयोगकर्ता सेटिंग्स ( Ctrl + , या फ़ाइल> वरीयताएँ> यदि उपलब्ध हो तो) निम्नलिखित में डालें (कृपया वीसीएस में कस्टम उपयोगकर्ता सेटिंग्स के लिए आवश्यक कर्ली ब्रेसिज़ पर ध्यान दें):

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

जवाब देता है। मेरे रेडिट पोस्ट से प्राप्त ... https://www.reddit.com/r/django/comments/6nq0bq/class_question_has_no_objects_member/

यह कोई त्रुटि नहीं है, यह केवल VSC की ओर से एक चेतावनी है। Django उस संपत्ति को सभी मॉडल वर्गों के लिए गतिशील रूप से जोड़ता है (यह हुड के नीचे बहुत सारे जादू का उपयोग करता है), इसलिए आईडीई वर्ग घोषणा को देखकर इसके बारे में नहीं जानता है, इसलिए यह आपको एक संभावित त्रुटि (यह नहीं है) के बारे में चेतावनी देता है। ऑब्जेक्ट वास्तव में एक प्रबंधक उदाहरण है जो DB को क्वेरी करने में मदद करता है। यदि आप वास्तव में उस चेतावनी से छुटकारा पाना चाहते हैं तो आप अपने सभी मॉडलों में जा सकते हैं और वस्तुओं को जोड़ सकते हैं = मॉडल। मानेगर () अब, VSC द्वारा घोषित वस्तुओं को देखेंगे और इसके बारे में फिर से शिकायत नहीं करेंगे।


प्रत्येक त्रुटि के लिए विशिष्ट प्रत्येक पंक्ति पर त्रुटियों को दबाने के बारे में कैसे?

कुछ इस तरह: https://pylint.readthedocs.io/en/latest/user_guide/message-control.html

त्रुटि: [pylint] वर्ग 'class_name' में कोई 'सदस्य_नाम' सदस्य नहीं है: इसे उस पंक्ति द्वारा दबाया जा सकता है:

  # pylint: disable=no-member

बस किस पर जोड़ते हुए @ Mallory-Erik ने कहा: आप objects = models.Manager() को रख सकते objects = models.Manager() मॉडल। objects = models.Manager() मोडल में:

class Question(models.Model):
    # ...
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    # ...
    def __str__(self):
        return self.question_text
    question_text = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')
    objects = models.Manager()

यदि आप अजगर 3 का उपयोग करते हैं

python3 -m pip install pylint-django

अगर अजगर> 3

python -m pip install pylint-django

Question = new Question() (मेरा मानना ​​है कि new एक टाइपो है) आप प्रश्न के एक उदाहरण के साथ प्रश्न मॉडल को अधिलेखित कर रहे हैं। जैसा कि सईसे ने टिप्पणियों में कहा: मॉडल के नाम के समान अपने चर के लिए एक ही नाम का उपयोग न करें। इसलिए इसे my_question = Question() तरह my_question = Question()





django-views