Je suis ici pour le même problème, mais pour une autre raison:
Class.objects.get(id=1)
Ce code élevais une exception ImportError. Ce qui était me confondre était que le code ci-dessous exécuté fin et a renvoyé un résultat fixé comme prévu:
Class.objects.all()
Queue du retraçage pour la méthode get()
:
File "django/db/models/loading.py", line 197, in get_models
self._populate()
File "django/db/models/loading.py", line 72, in _populate
self.load_app(app_name, True)
File "django/db/models/loading.py", line 94, in load_app
app_module = import_module(app_name)
File "django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named myapp
La lecture du code à l'intérieur Django loading.py
, je est arrivé à la conclusion que mon settings.py
avait un mauvais chemin à mon application qui contient ma définition de modèle Class
. Tout ce que j'avais à faire était de corriger le chemin vers l'application et la méthode get()
s'est bien exécutée.
Voici mon settings.py
avec le chemin corrigé:
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
# ...
'mywebproject.myapp',
)
Toute la confusion a été causée parce que je me sers ORM de Django comme autonome, de sorte que l'espace de noms devait refléter.
FYI, 'pk' est la façon préférée de se référer à la clé primaire pour n'importe quel modèle. Le champ 'id' n'est généré que si l'auteur du modèle ne désigne pas spécifiquement une clé primaire. Si l'auteur * a * spécifié * un champ de clé primaire qui n'est pas nommé "id", il n'y aura pas de champ "id". –
Aussi FYI, 'id' dans une fonction intégrée qui retourne l'identité d'un objet. Dans la majorité des cas, référencer les choses par «id» fera la bonne chose, par ex. 'Class.objects.get (id = this_object_id)' travail. Mais c'est quelque chose à considérer je suppose. – Tom