1

我想要做的是检索 CarModel 对象的过滤列表,其中 carfield 在另一个模型的字段列表中,比如 GasModel。但是也必须过滤掉一组 GasModel,到一个列表中,其中 GasModel 中的一个字段必须等于 CarModel 中的另一个字段(不同的字段)。

所以几乎我想过滤一个列表,以便该列表的一个字段包含在不同模型的字段的单独列表中,并且该列表(第二个模型)也被过滤(但由第一个的不同字段(汽车模型)。我希望这一切都在一个查询集调用中。

这就是我到目前为止所拥有的,我相信的错误是

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_gasmodel表,而不是来自carmodel表。

于 2012-10-03T02:45:20.417 回答