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の内部のコードを読んで、モデル定義を含むアプリへのパスが間違っているloading.py
という結論に達しました。アプリへのパスを修正し、メソッドを正常に実行するだけで済みました。settings.py
Class
get()
これがsettings.py
正しいパスを持つ私のものです:
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
# ...
'mywebproject.myapp',
)
私はDjangoのORMをスタンドアロンとして使用しているため、すべての混乱が生じたため、名前空間はそれを反映する必要がありました。
以下を使用できます。
objects_all=Class.objects.filter(filter_condition="")
これは、1つのオブジェクトを取得しても、クエリセットを返します。ちょうど1つのオブジェクトが必要な場合:
obj=Class.objects.get(conditon="")
get_object_or_404 djangoショートカットを使用することもできます。オブジェクトが見つからない場合は、404エラーが発生します。
pk
は、任意のモデルの主キーを参照するための推奨される方法です。このid
フィールドは、モデルの作成者が主キーを明示的に指定していない場合にのみ生成されます。著者は場合はやった名前が付いていない主キーフィールドを指定しid
、そこではありませんid
フィールド。