を照会します明らかに私の意図であったモデルBとCのすべてのインスタンスをロードします。ジャンゴ選択フィールドは、私は、モデルAのためのモデル選択フィールドを有するフォームのモデルA.</p> <p>を延長両方二つのモデル、モデルBとモデルCを有する
このドロップダウンは1000個以上のAオブジェクトです。私はhasattr()を使用してBまたはCであるかどうかを判断しています。これらは、これらのクラスのユニコードメソッドを使用して、ドロップダウンから文字列内のオブジェクトを表示します。
これは、処理に数分かかるSQLクエリを何千も作成します。今、私のソリューションは、データベースを3回クエリすることです(すべてのA、B、Cオブジェクトを取得し、Aをループして各オブジェクトがBまたはC型かどうかを判断し、正しいユニコード文字列を使用するリストにプッシュします)。
私は、何千ものモデルオブジェクトを使ってドロップダウンをポピュレートする効率的な方法を知っているのだろうかと思っていたのですが、私はデータを消去し、フォームを保存するときに正しいオブジェクトを選択しました。選択肢そのモデルは他のモデルのベースモデルである。
乾杯、 ディーン
ユニコードメソッドは正確に何をしますか?彼らは余分なクエリを引き起こすべきではありません – Sayse
BまたはCのオブジェクトには、他のモデルへの外部キーフィールドがあります。 - unicodeはこれらの他のモデルからフィールドを取得します(self.foreign_key_field.field_to_print_out)。たとえば、1つのオブジェクトがタイプB(拡張A)で、このオブジェクトを最もよく表している(外来キーを介して関連している)モデルXのフィールドを出力したいとします。 select_related()はここに出現するでしょうか? (ps。私はDjangoを初めて使っています) –
正しいですが、元の長い土曜日の夜と完全に間違っていたので、答えを書き直しました。うまくいけば、1kのクエリがどこからくるのかを説明してください。 – Sayse