我的应用程序使用rest-framework和django-filter. 我用它FilterSet来提供文章过滤列表(ModelViewSet)date:
from django_filters import rest_framework as filters
class ArticleFilter(filters.FilterSet):
start_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='gte')
end_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='lte')
class Meta:
model = Article
fields = ['pub_date']
Run Code Online (Sandbox Code Playgroud)
我想将搜索框添加到我的应用程序中,因此我需要另一个过滤器,它将在我的模型中使用全文搜索Article。我要搜索的字段是title和description。我决定添加search带有method这样的参数的字段:
from django_filters import rest_framework as filters
from django.contrib.postgres.search import SearchVector
class ArticleFilter(filters.FilterSet):
start_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='gte')
end_date = filters.DateTimeFilter(field_name='pub_date', lookup_expr='lte')
search = filters.CharFilter(method='filter_search')
def filter_search(self, queryset, name, value):
return queryset.annotate(search=SearchVector('title', 'description')).filter(search=value)
class Meta: …Run Code Online (Sandbox Code Playgroud)