Django database query: How to get object by id?
If you want to get an object, using get()
is more straightforward:
obj = Class.objects.get(pk=this_object_id)
I got here for the same problem, but for a different reason:
Class.objects.get(id=1)
This code was raising an ImportError exception. What was confusing me was that the code below executed fine and returned a result set as expected:
Class.objects.all()
Tail of the traceback for the get()
method:
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
Reading the code inside Django's loading.py
, I came to the conclusion that my settings.py
had a bad path to my app which contains my Class
model definition. All I had to do was correct the path to the app and the get()
method executed fine.
Here is my settings.py
with the corrected path:
INSTALLED_APPS = ( 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', # ... 'mywebproject.myapp',
)
All the confusion was caused because I am using Django's ORM as a standalone, so the namespace had to reflect that.