gpt4 book ai didi

django-rest-framework - 如何从多个字段中进行搜索?

转载 作者:行者123 更新时间:2023-12-02 20:46:28 25 4
gpt4 key购买 nike

我的 View 集有自定义过滤器:

class OrderFilter(django_filters.rest_framework.FilterSet):
username = django_filters.CharFilter(name='user__username', lookup_expr='icontains')
client_name = django_filters.CharFilter(name='user__first_name', lookup_expr='icontains')

class Meta:
model = Order
exclude = ['pk']

当我发送这样的查询时它会起作用:

http://localhost:8000/orders/?username=testuser

http://localhost:8000/orders/?client_name=john

但我只想创建一个查询来搜索包含 usernamefirst_namelast_name 中搜索字符串的数据。怎么做?

最佳答案

对于无法通过单个过滤器表达的复杂行为,一般的包罗万象的方法是使用过滤器类的 method 参数 ( docs )。

可能的实现:

from django_filters import rest_framework as filters
from django.db.models import Q


class OrderFilter(filters.FilterSet):
search = filters.CharFilter(method='search_filter')

def search_filter(self, queryset, name, value):
return queryset.filter(Q(username__icontains=value)
| Q(first_name__icontains=value)
| Q(last_name__icontains=value))

关于django-rest-framework - 如何从多个字段中进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44205851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com