Django-Filter:使用数组在 ArrayField 中搜索?
Django-Filter: Search within an ArrayField with an Array?
我有一个使用 arrayField 的 all_positions
数据点。所以一些示例数据如下所示:
all_positions: ["C", "1B"],
all_positions: ["RP", "CP"],
all_positions: ["CP"],
我希望能够提出类似于 /api/player-profiles/?all_positions=RP,CP
和 return 第二个和第三个示例的请求。本质上,我想 return 所有拥有任何位置的玩家在他们的 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')
我有一个使用 arrayField 的 all_positions
数据点。所以一些示例数据如下所示:
all_positions: ["C", "1B"],
all_positions: ["RP", "CP"],
all_positions: ["CP"],
我希望能够提出类似于 /api/player-profiles/?all_positions=RP,CP
和 return 第二个和第三个示例的请求。本质上,我想 return 所有拥有任何位置的玩家在他们的 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')