web-dev-qa-db-ja.com

Djangoデータベースクエリ:IDでオブジェクトを取得する方法は?

Djangoは、IDフィールドを主キーとして自動的に作成します。

次に、このIDでオブジェクトを取得する必要があります。

object = Class.objects.filter() 

このフィルターの書き方は?

78
user469652

オブジェクトを取得する場合は、get()を使用する方が簡単です。

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

私は同じ問題のためにここに来ましたが、別の理由で:

_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の_loading.py_内のコードを読んで、私の_settings.py_にはClassモデル定義を含むアプリへの悪いパスがあるという結論に達しました。アプリケーションへのパスを修正するだけで、get()メソッドが正常に実行されました。

修正されたパスを持つ_settings.py_は次のとおりです。

_INSTALLED_APPS = (
    'Django.contrib.contenttypes',
    'Django.contrib.sessions',
    'Django.contrib.sites',
    # ...
    'mywebproject.myapp',
_

DjangoのORMをスタンドアロンとして使用しているため、すべての混乱が発生したため、名前空間にそれを反映させる必要がありました。

13
Lucio Paiva