如何使用 DjangoFilterBackend 过滤 ForeignKey 的多个值
Posted
技术标签:
【中文标题】如何使用 DjangoFilterBackend 过滤 ForeignKey 的多个值【英文标题】:How to filter against multiple values for ForeignKey using DjangoFilterBackend 【发布时间】:2017-04-02 00:43:51 【问题描述】:我有以下字段的模型:
loading_port discharge_port 载体 供应商所有这些字段都是包含 name
字段的模型的 ForeignKey。
我还有视图集,它使用 DjangoFilter 后端进行过滤。此时我想为每个字段过滤多个值,例如:
loading_port__name=PORT_1&loading_port__name=PORT_2&supplier__name=SUPP_NAME_1&supplier__name=SUPP_NAME_2
等等。但是,如果我实际传递此 url,它会返回针对最后一个参数值进行过滤的行(在此示例中,用于 loading_port - PORT_2,用于供应商 - SUPP_NAME_2)。
如何修复过滤以使其满足我的要求?
【问题讨论】:
嗨!你能提供模型的代码并查看你在哪里使用这些过滤器吗? 这能回答你的问题吗? How do you use the django-filter package with a list of parameters? 【参考方案1】:但是,如果我实际上传递了这个 url,它会返回针对最后一个参数值进行过滤的行
这是因为ForeignKey
字段默认为ModelChoiceFilter
,它只从GET
QueryDict
中获取一个值。
如果您将字段声明为ModelMultipleChoiceFilter
,它们将获取您需要的值列表。
【讨论】:
以上是关于如何使用 DjangoFilterBackend 过滤 ForeignKey 的多个值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ListAPIView 中使用 django-filter 对过滤结果进行排序
如何在ListAPIView中使用django-filter对过滤结果进行排序