llegué aquí por el mismo problema, pero por una razón diferente:
Class.objects.get(id=1)
Este código estaba criando una excepción ImportError. Lo que me estaba confundiendo fue que el código de abajo ejecutado bien y devuelve un conjunto de resultados como se esperaba:
Class.objects.all()
Cola del rastreo para el get()
método:
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
lectura del código dentro de Django de loading.py
, me Llegué a la conclusión de que mi settings.py
tenía una mala ruta a mi aplicación que contiene mi definición de modelo Class
. Todo lo que tuve que hacer fue corregir el camino a la aplicación y el método get()
ejecutado correctamente.
Aquí es mi settings.py
con la trayectoria de corrección:
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
# ...
'mywebproject.myapp',
)
Toda la confusión fue causada porque estoy utilizando ORM de Django como un independiente, por lo que el espacio de nombres tenía que reflejar eso.
FYI, 'pk' es la forma preferida de referirse a la clave principal para cualquier modelo. El campo 'id' solo se genera si el autor del modelo no designa específicamente una clave principal. Si el autor * no * especificó un campo de clave principal que no se llama 'id', entonces no habrá un campo 'id'. –
También FYI, 'id' en una función incorporada que devuelve la identidad de un objeto. En la mayoría de los casos, hacer referencia a cosas por 'id' hará lo correcto, p. 'Class.objects.get (id = this_object_id)' trabajo. Pero eso es algo a considerar, supongo. – Tom