Skip to main content
 首页 » 编程设计

python之Django-filter,如何进行多字段搜索 (使用 django 过滤器!)

2024年08月13日43Leo_wl

如何使用 Django-filter 从以下模型中搜索多个字段:

class Location(models.Model): 
    loc = models.CharField(max_length=100, blank=True) 
    loc_mansioned = models.CharField(max_length=100, blank=True) 
    loc_country = models.CharField(max_length=100, blank=True) 
    loc_modern = models.CharField(max_length=100, blank=True) 

我的网站上需要一个输入字段,可以搜索 Location 模型的所有字段

请您参考如下方法:

您或许可以创建一个自定义过滤器并执行如下操作:

from django.db.models import Q 
import django_filters 
 
 
class LocationFilter(django_filters.FilterSet): 
    q = django_filters.CharFilter(method='my_custom_filter', label="Search") 
 
    class Meta: 
        model = Location 
        fields = ['q'] 
 
    def my_custom_filter(self, queryset, name, value): 
        return queryset.filter( 
            Q(loc__icontains=value) | 
            Q(loc_mansioned__icontains=value) |  
            Q(loc_country__icontains=value) |  
            Q(loc_modern__icontains=value) 
        ) 

这将按这些字段中的任何一个进行过滤。您可以将 icontains 替换为您想要的任何内容。