Запрос к базе данных Django: как получить объект по идентификатору?



Django автоматически создает поле ID в качестве первичного ключа.



теперь мне нужно получить объект с этим идентификатором.



object = Class.objects.filter() 


Как написать такой фильтр?

1149   2  

2 ответов:

Если вы хотите получить объект, используя get() более прост:

obj = Class.objects.get(pk=this_object_id)

я попал сюда по той же проблеме, но по другой причине:

Class.objects.get(id=1)

этот код вызывал исключение ImportError. Что меня смущало, так это то, что приведенный ниже код выполнялся нормально и возвращал результирующий набор, как ожидалось:

Class.objects.all()

хвост трассировки для 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

чтение кода внутри Django's loading.py, Я пришел к выводу, что мой settings.py был плохой путь к моему приложению, которое содержит мой Class модель определение. Все, что мне нужно было сделать, это исправить путь к приложению и get() метод выполняется нормально.

вот мой settings.py с исправленным путем:

INSTALLED_APPS = (
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    # ...
    'mywebproject.myapp',

)

вся путаница была вызвана тем, что я использую ORM Django как автономный, поэтому пространство имен должно было отражать это.

Comments

    Ничего не найдено.