私は複数のフィールドで構成されるDjangoモデルを持っています。私は1つだけを選択したいと思う。Djanoの唯一の()はまだすべての既存のフィールドを選択します
私はonly()を使っていますが、ドキュメントによれば、ここにはwoodAsked
フィールドしか返されません。しかし返されたクエリーセットには、まだPainting
モデルの各フィールドが含まれます。
>>> a = Painting.objects.only('woodAsked')
>>> serializers.serialize("json",a)[1:200]
'{"model": "binaryQuestionApp.painting", "pk": 3, "fields": {"name": "Getty00052501.jpg", "objectNumber": "00052501.jpg", "collection": "Getty", "title": "pretty after al", "woodAsked": 0, "woodYes": '
「woodAsked」フィールドのみを選択するにはどうすればよいですか?
これは私が探していたまさにでした。私は分かりません。 'a = Painting.objects.only( 'woodAsked')'では、 'a'は初期クエリを表していませんか?私は 'woodAsked'フィールドだけがそこにあると思うでしょう。 –
@MitchellvanZuylen - 値を返すのに時間がかかる可能性がある配列フィールドを持つより複雑なモデルを想像してください。あなたは本当にそれらの値の必要性を持っていないので、あなたのクエリにそれらの値をフェッチする必要はありません。 'only'は余分なフェッチ時間を避けることを可能にします。 – Sayse
@MitchellvanZuylen' .only() 'はまだモデルインスタンスを返しますが、最初にアクセスしたときにデータベースからフィールドをフェッチする記述子でロードされていないフィールドを置き換えます。これは高度な機能であり、非常に具体的なパフォーマンス調整にのみ役立ちます。あなたはそれを必要としません。 (あなたがあなたのアプリケーションを詳細にプロファイリングし、あなたがそれを必要としていると断言していない限り) – knbk