【发布时间】:2021-07-24 09:16:00
【问题描述】:
我有一些类似的数据:
position: "1B, 2B, 3B, SS"
我希望能够运行诸如/players/?position=1B 之类的查询,但是,这目前不会返回任何内容,因为这些项目是用逗号分隔的。
这里是views.py的精简版:
class CharInFilter(django_filters.BaseInFilter, django_filters.CharFilter):
pass
class PlayerProfileFilter(django_filters.FilterSet):
position = CharInFilter(field_name='display_position', lookup_expr='in')
有没有办法以这种方式过滤数据?
【问题讨论】:
-
试试
lookup_expr='contains'? docs.djangoproject.com/en/3.2/ref/models/querysets/#contains -
@IainShelvington:但是反过来不行吗?因此,这意味着该位置应包含
1B, 2B, 3B, SS。但很可能这是一个简单的CharField,因此包含仅在播放器的position类似于...1B, 2B, 3B, SS...时才有效 -
@IainShelvington 你是对的。这就是使用 contsins 时的确切行为。
标签: django django-rest-framework django-filter