Django database query: How to get object by id? Django database query: How to get object by id? django django

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.


You can also use get_object_or_404 django shortcut. It raises a 404 error if object is not found.