Django автоматически создает поле id в качестве первичного ключа.
Теперь мне нужно получить объект по этому идентификатору.
object = Class.objects.filter()
Как написать этот фильтр?
django
django-models
django-orm
user469652
источник
источник
pk
это предпочтительный способ ссылаться на первичный ключ для любой модели.id
Поле генерируется только если модель автор конкретно не назначает первичный ключ. Если автор сделал указать поле первичного ключа, не по имениid
, то не будетid
поле.id
во встроенной функции, которая возвращает идентификатор объекта. В большинстве случаев ссылки на вещиid
будут делать правильные вещи, например,Class.objects.get(id=this_object_id)
работать. Но я думаю, это то, что нужно учитывать.Я попал сюда по той же проблеме, но по другой причине:
Этот код вызывал исключение ImportError. Что меня сбивало с толку, так это то, что приведенный ниже код работал нормально и возвращал ожидаемый результат:
Хвост трассировки для
get()
метода:Читая код внутри Django
loading.py
, я пришел к выводу, что у меняsettings.py
плохой путь к моему приложению, которое содержитClass
определение моей модели. Все, что мне нужно было сделать, это исправить путь к приложению иget()
выполнить метод.Вот мой
settings.py
исправленный путь:)
Вся путаница возникла из-за того, что я использую ORM Django как автономный объект, поэтому пространство имен должно было это отражать.
источник
Вы также можете:
Это работает, но я не уверен, поддерживается ли это в Django 2.
источник
Ты можешь использовать:
Это вернет набор запросов, даже если он получит один объект. Если вам нужен ровно один объект, используйте:
источник
Вы также можете использовать ярлык get_object_or_404 django. Если объект не найден, возникает ошибка 404.
источник
Если у вас нет идентификатора, например mysite.com/something/9182301, вы можете использовать
get_object_or_404
импортfrom django.shortcuts import get_object_or_404
.Пример использования:
источник