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


154
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: क्लास 'प्रश्न' में कोई ऑब्जेक्ट नहीं है 'सदस्य'

मैं Django प्रलेखन ट्यूटोरियल का पालन कर रहा हूं और उनके पास समान कोड है और चल रहा है।

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

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

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

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

जो मदद नहीं की, यहां तक ​​कि जीथब रीडमी फ़ाइल भी कहती है ...

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

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

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


7
उपयोगpylint --generated-members=objects
राजा साइमन

क्षमा करें, इसे मेरे cmd में चलाया और यह एक चीज़ नहीं बदली।
बजे

आपका अजगर और डीजे संस्करण क्या है?
गैविन एक्टेमियर 2

1
verson अजगर 3.6.0 और django 1.11.3
buuencrypted

2
मेरे लिए क्या समस्या हल Managerहो गई models.pyफ़ाइल में एक उदाहरण बना रहा था । अधिक जानकारी के लिए django प्रलेखन देखें ।
इकराज मुहम्मद

जवाबों:


335

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

pip install pylint-django

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

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

उपयोगकर्ता सेटिंग कहां है
Cepprakash

फाइल पर जाएं-> प्राथमिकताएं-> सेटिंग या "Ctrl + Comma" का उपयोग करें
सुकमा सूत्र

29
अति उत्कृष्ट! मैं यह भी इंगित करता हूं कि आप प्लगइन विकल्प को एक .pylintrcफ़ाइल में रख सकते हैं जैसे: load-plugins=pylint_django और इस तरह इसे सीएलआई द्वारा भी उठाया जाएगा, इसलिए यह निरंतर एकीकरण सेटिंग में काम करेगा।
सिबेरियन

ऐसा करने के बाद मुझे [pylint] C0111:Missing module docstringत्रुटि हो रही है
विष्णु शर्मा

1
आधिकारिक डॉक में अधिक जानकारी: code.visualstudio.com/docs/python/…
एंटोन

98

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

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

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

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

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


6
जोंस फाइल में कॉमा डालना मत भूलना, अन्यथा यह सही ढंग से काम नहीं करेगा।
जॉर्जी स्टॉयनोव

4
इसके अलावा मत भूलना pip install pylint-django। यदि एक्सटेंशन स्थापित नहीं है, तो आपकी सेटिंग में यह परिवर्तन सभी लाइनिंग को तोड़ते हुए चुपचाप विफल हो जाता है।
डस्टिन मिशेल्स

1
धन्यवाद। आप यहाँ आधिकारिक वी.एस. कोड प्रलेखन में एक ही जानकारी पा सकते हैं: code.visualstudio.com/docs/python/…
एंटोन

इसने पहले की त्रुटि को हल किया। लेकिन, अब एक चेतावनी आ रही है। Missing module docstringpylint(missing-module-docstring)। इसके लिए क्या किया जा सकता है?
ऑप्‍टराइडर

34

Django पाइलिंट स्थापित करें:

pip install pylint-django

ctrl + shift + p> प्राथमिकताएं: भाषा विशिष्ट सेटिंग्स कॉन्फ़िगर करें> पायथन

Python भाषा के लिए उपलब्ध settings.json को नीचे जैसा दिखना चाहिए:

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

    "[python]": {

    }
}

26

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

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


13
objects = models.Manager()मॉडल वर्ग में वीएस कोड में मेरे लिए यह किया। धन्यवाद।
मैलोरी-एरिक

21

मैंने सभी संभावित समाधानों की पेशकश करने की कोशिश की है, लेकिन पूरी तरह से मेरी vscode सेटिंग्स इसके लाइनर पथ को नहीं बदलेगी। इसलिए, मैं सेटिंग्स> उपयोगकर्ता सेटिंग्स> अजगर में vscode सेटिंग्स का पता लगाने के लिए ट्राइड करता हूं । खोजें Pylint पथ: Linting और "pylint_django" के लिए इसे बदल। सेटिंग> उपयोगकर्ता सेटिंग्स> पायथन कॉन्फ़िगरेशन "pyLint" से "pylint_django" पर लाइनर को "pylint_django" में बदलना न भूलें ।

लिंटर पथ संपादित करें


1
मैकओएस हाई सिएरा और वीएससी 1.38 पर मेरे लिए काम किया, बशर्ते कि मैं पहले अपने आभासी वातावरण में "पाइप इंस्टॉल पाइलिंट-डजैंगो" चला।
एन्ड्रेस मेजा-एस्कलोन

12

बनाम कोड 1.40.0 के लिए अद्यतन

करने के बाद:

$ pip install pylint-django

इस लिंक पर जाओ: https://code.visualstudio.com/docs/python/linting#_default-pyls-nules

सूचना बनाने के लिए रास्ता है कि pylintखाते में राशि pylint-djangoनिर्दिष्ट करने के द्वारा है:

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

में settings.json वी.एस. संहिता की।

लेकिन इसके बाद, आपको बहुत सी नई लाइनिंग त्रुटियाँ दिखाई देंगी। फिर, यहां क्या कहा पढ़ें:

जब भी (डिफ़ॉल्ट) python.linting.pylintUseMinimalCheckersसेट किया जाता है तो ये तर्क पारित हो जाते हैं true। यदि आप एक मान निर्दिष्ट करते हैं pylintArgsया पाइलिंट कॉन्फ़िगरेशन फ़ाइल का उपयोग करते हैं (अगला भाग देखें), तो pylintUseMinimalCheckersनिहित रूप से गलत पर सेट किया गया है

मैंने जो भी किया है .pylintrcवह लिंक में वर्णित के रूप में एक फ़ाइल बना रहा है , और फिर, फ़ाइल के अंदर निम्नलिखित मापदंडों को कॉन्फ़िगर किया है (बाकी फ़ाइल को अछूता छोड़कर):

load-plugins=pylint_django

disable=all

enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode

अब pylintउम्मीद के मुताबिक काम करता है।


एक अलग। Pylintrc फ़ाइल बनाने के बजाय, आप अपनी सेटिंग में ऐसा करके एक ही प्रभाव प्राप्त कर सकते हैं। json: {"python.linting.pylintArgs": ["--load-plugins = pylintddjango", "--disable = all" "," --enable = F, E, अगम्य, डुप्लिकेट-की, अनावश्यक-अर्धविराम, वैश्विक-चर-नॉट-असाइन, अप्रयुक्त-चर, बाइनरी-ऑप-अपवाद, बैड-फॉरमेट-स्ट्रिंग, विसंगत-बैकस्लैश-इन -string, bad-open-mode "]}
sql_knievel

11

आप विज़ुअल स्टूडियो कोड के लिए पायथन एक्सटेंशन के लिए लिंटर को बदल सकते हैं।

VS में कमांड पैलेट Ctrl + Shift + P खोलें और निम्न में से एक कमांड टाइप करें:

पायथन: लिंटर का चयन करें

जब आप एक लिंटर का चयन करते हैं तो यह इंस्टॉल हो जाएगा। मैंने फ्लेक 8 की कोशिश की और यह मेरे लिए हल किया गया मुद्दा लगता है।


1
जब यह काम करता था, तो मुझे पता चला कि फ्लैके 8 वास्तव में एक लिंटर के रूप में कष्टप्रद है।
रिचर्ड डन

4

बस किस पर जोड़ते हुए @ मलोरी-एरिक ने कहा: आप 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

निम्नलिखित आदेश का उपयोग करके पहले pylint-django स्थापित करें

$ pip install pylint-django

फिर दूसरी कमांड को निम्नानुसार चलाएं:

$ pylint test_file.py --load-plugins pylint_django

- लोड-प्लगइन्स pylint_django django के कोड की सही समीक्षा करने के लिए आवश्यक है


2

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

python3 -m pip install pylint-django

अगर अजगर <3

python -m pip install pylint-django==0.11.1

नोट: संस्करण 2.0, के लिए pylint> = 2.0 की आवश्यकता है जो अब पायथन 2 का समर्थन नहीं करता है! ( https://pypi.org/project/pylint-django/ )


1

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


django और pytho के मेरे पीसी कॉन्फिगरेशन के साथ इसका कुछ, मैंने इसे अपनी मैकबुक पर रीकोड किया और यह ठीक काम करता है। इसके अलावा मैंने अपने कोड में उर सुझाव की कोशिश की और इससे कोई फर्क नहीं पड़ा।
16

1

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

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

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

  # pylint: disable=no-member

2
इस समाधान के रूप में जानवर-बल के रूप में, यह किसी की पवित्रता को संरक्षित करने का एकमात्र तरीका है। मुझे दर्जनों अलग-अलग मॉड्यूल पर वे त्रुटियां मिल रही हैं, मैं हर बार जब मैं एक नया देखता हूं, तो मैं सेटिंग्स बदलने नहीं जा रहा हूं।
प्रेज़ेमेक डी


0

जब मैं pylint_runner का उपयोग करता हूं, तो यह समस्या और बढ़ जाती है

तो मैं क्या कर रहा हूँ .pylintrc फ़ाइल खोलें और इसे जोड़ें

# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=objects

0

मैं उपयोगकर्ता सेटिंग को अपडेट करने में सक्षम था। json

मेरे मैक पर इसे संग्रहीत किया गया था:

~/Library/Application Support/Code/User/settings.json

इसके भीतर, मैं निम्नलिखित सेट करता हूं:

{
    "python.linting.pycodestyleEnabled": true,
    "python.linting.pylintEnabled": true,
    "python.linting.pylintPath": "pylint",
    "python.linting.pylintArgs": ["--load-plugins", "pylint_django"]
}

मेरे लिए यह समस्या हल हो गई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.