如何使用DjangoFilterBackend过滤FK的多个值

时间:2016-11-18 08:29:31

标签: python django django-rest-framework django-filter

我有以下字段的模型:

  • loading_port
  • discharge_port
  • 载体
  • 供应商

对于包含name字段的模型,所有这些字段都是FK。

我也有viewset,它使用DjangoFilter后端进行过滤。此时我想为每个字段过滤多个值,例如:

loading_port__name=PORT_1&loading_port__name=PORT_2&supplier__name=SUPP_NAME_1&supplier__name=SUPP_NAME_2等等。但是,如果我实际传递此网址,则会返回针对上一个参数值进行过滤的行(在此示例中为loading_port - PORT_2,供应商 - SUPP_NAME_2)。

如何修复过滤以满足我的要求?

1 个答案:

答案 0 :(得分:1)

  

但是,如果我实际传递此URL,则会返回针对上一个参数值

进行过滤的行

这是因为ForeignKey字段默认为ModelChoiceFilter,只需GET QueryDict中的一个值。

如果您将字段声明为ModelMultipleChoiceFilter,则会获取所需的值列表。