2010-11-29 6 views

答えて

92

オブジェクトを取得したい場合は、get()を使用するとより簡単です。

obj = Class.objects.get(pk=this_object_id) 
+9

FYI、 'pk'は、任意のモデルの主キーを参照するのに適した方法です。 'id'フィールドは、モデル作成者がプライマリキーを特別に指定していない場合にのみ生成されます。作者が 'id'という名前のない主キーフィールドを指定した場合、' id'フィールドはありません。 –

+0

また、FYIでは、オブジェクトのIDを返す組み込み関数の 'id'もあります。大部分の場合、 'id 'で物事を参照することは正しいことをするでしょう。 'Class.objects.get(id = this_object_id)'が動作します。しかし、それは私が推測すると考えるべきことです。 – Tom

9

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

Class.objects.get(id=1) 

このコードを上げましたImportError例外です。私は、

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内のコードを読む:トレースバックの

Class.objects.all() 

テールget()方法について:どのような私を混乱させたことは、コードは以下の罰金を実行し、期待通りの結果が設定され返されていることでした私のsettings.pyが私のClassモデル定義を含む私のアプリへの悪いパスを持っていたという結論に達しました。私がしなければならなかったのは、アプリへの道筋を修正し、get()メソッドを正常に実行したことだけでした。ここで

が修正パスと私のsettings.py次のとおりです。)

INSTALLED_APPS = (
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    # ... 
    'mywebproject.myapp', 

私は、スタンドアロンとしてDjangoのORMを使用していますので、すべての混乱が発生したので、名前空間はそれを反映しなければなりませんでした。

関連する問題