webentwicklung-frage-antwort-db.com.de

Nicht aufgelöste Attributreferenz 'Objekte' für Klasse '' in PyCharm

Ich benutze Community pycharm und die Version von Python ist 3.6.1, Django ist 1.11.1. Diese Warnung hat keine Auswirkungen auf die Ausführung, aber ich kann die automatische Vervollständigung der IDE nicht verwenden.

27
zhiang.shi

Sie müssen die Django-Unterstützung aktivieren. Gehe zu 

PyCharm -> Einstellungen -> Sprachen & Frameworks -> Django  

und dann Enable Django Support prüfen

46
vishes_shell

Sie können den Standardmodellmanager auch explizit verfügbar machen:

from Django.models import models

class Foo(models.Model):
    name = models.CharField(max_length=50, primary_key=True)

    objects = models.Manager()
4
Campi

Python-Frameworks (Django, Flask usw.) werden nur in der Professional Edition unterstützt.

PyCharm Editions-Vergleich

2
winux

Ich habe diese hacky Workaround mit Stub-Dateien gefunden:

models.py

from Django.db import models


class Model(models.Model):
    class Meta:
        abstract = True

class SomeModel(Model):
    pass

models.pyi

from Django.db import models

class Model:
    objects: models.Manager()

Dies sollte die PyCharm-Code-Vervollständigung ermöglichen:  enter image description here

Dies ähnelt der Lösung von Campi, vermeidet jedoch die Notwendigkeit, den Standardwert erneut zu deklarieren

0

Eine andere Lösung, die ich gefunden habe, ist die Verwendung von @ python_2_unicode_compatible decorator in einem beliebigen Modell . Außerdem müssen Sie über eine str - Implementierung Ihrer Funktion verfügen

Zum Beispiel:

# models.py

from Django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class SomeModel(models.Model):
    name = Models.CharField(max_length=255)

    def __str__(self):
         return self.name
0
Yarh

Verwenden Sie ein Basismodell für alle Ihre Modelle, die Objekte verfügbar machen:

class BaseModel(models.Model):
    objects = models.Manager()


class Model1(BaseModel):
    id = models.AutoField(primary_key=True)

class Model2(BaseModel):
    id = models.AutoField(primary_key=True)
0
Joseph Bani