[django] 장고 데이터베이스 쿼리 : ID로 객체를 얻는 방법?
Django는 자동으로 id 필드를 기본 키로 만듭니다.
이제이 ID로 개체를 가져와야합니다.
object = Class.objects.filter()
이 필터를 작성하는 방법?
답변
객체를 얻으려면 사용 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',
)
모든 혼란은 Django의 ORM을 독립형으로 사용하기 때문에 발생했기 때문에 네임 스페이스는이를 반영해야했습니다.
답변
다음을 수행 할 수도 있습니다.
obj = ClassModel.get_by_id(object_id)
이것은 작동하지만 Django 2에서 지원되는지 확실하지 않을 수 있습니다.
답변
당신이 사용할 수있는:
objects_all=Class.objects.filter(filter_condition="")
이것은 하나의 객체를 가져 오더라도 쿼리 세트를 반환합니다. 정확히 하나의 개체가 필요한 경우 :
obj=Class.objects.get(conditon="")