Django는 자동으로 id 필드를 기본 키로 만듭니다.
이제이 ID로 개체를 가져와야합니다.
object = Class.objects.filter()
이 필터를 작성하는 방법?
Django는 자동으로 id 필드를 기본 키로 만듭니다.
이제이 ID로 개체를 가져와야합니다.
object = Class.objects.filter()
이 필터를 작성하는 방법?
답변:
나는 같은 문제로 여기에 왔지만 다른 이유로 :
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을 독립형으로 사용하기 때문에 발생했기 때문에 네임 스페이스는이를 반영해야했습니다.
get_object_or_404 django 바로 가기를 사용할 수도 있습니다 . 객체를 찾을 수 없으면 404 오류가 발생합니다.
pk
는 모든 모델의 기본 키를 참조하는 데 선호되는 방법입니다. 이id
필드는 모델 작성자가 기본 키를 구체적으로 지정하지 않은 경우에만 생성됩니다. 저자는 경우 한 이름이되지 않은 기본 키 필드를 지정id
, 다음이되지 않습니다id
필드.