Django过滤器:用数组在ArrayField中搜索



我有一个使用arrayField的all_positions数据点。因此,一些示例数据看起来像:

all_positions: ["C", "1B"],
all_positions: ["RP", "CP"],
all_positions: ["CP"],

我希望能够提出类似于/api/player-profiles/?all_positions=RP,CP的请求,并返回第二个和第三个示例。从本质上讲,我想返回所有在all_positions数据中有任何位置传递到URL的玩家。

我读过关于重叠的文章,但不确定如何将其集成到我的django-rest过滤器中。以下是过滤器当前的样子:

class PlayerProfileFilter(django_filters.FilterSet):
all_positions = CharInFilter(field_name='all_positions', lookup_expr='contains')

只需将lookup_expr中的查找过滤器从contains更改为overlap:

class PlayerProfileFilter(django_filters.FilterSet):
all_positions = CharInFilter(field_name='all_positions', lookup_expr='overlap')

最新更新