1

私がやろうとしているのは、carfield が別のモデル、たとえば GasModel のフィールドのリストにある CarModel オブジェクトのフィルター処理されたリストを取得することです。ただし、GasModels のセットもフィルターで除外し、GasModel のフィールドが CarModel の別のフィールド (異なるフィールド) と等しくなければならないリストにする必要があります。

そのリストのフィールドが別のモデルのフィールドの別のリストに含まれるようにリストをフィルタリングしたいのですが、そのリスト(2番目のモデルの)もフィルタリングされます(ただし、最初のモデルの別のフィールドによって) (車のモデル)。これをすべて1回のクエリセット呼び出しにしたいと思います。

これは私がこれまでに持っているものです。私が信じているエラーは

WHERE anothergasfield = another_field_from_car_carmodel

FROM キーワードか何かがありませんか? もしそうなら、それはどこに行くべきですか?

CarModel.objects.extra(where = ['carfield IN (SELECT gasfield FROM\
    gas_gasmodel WHERE anothergasfield = another_field_from_car_carmodel)'])
      .order_by(...)

ありがとう

4

1 に答える 1

3

これはどう:

CarModel.objects.extra(where = ['carfield IN (SELECT gasfield FROM\
    gas_gasmodel WHERE anothergasfield = carmodel.another_field_from_car_carmodel)'])
      .order_by(...)

carmodelを のテーブル名に置き換えるだけですCarModel。通常は{{ app_name }}_{{ model_name }}です。

フィールドがテーブルからではなく、テーブルからのものであるネストされたselectステートメントがあります。gas_gasmodelcarmodel

于 2012-10-03T02:45:20.417 に答える