How can I make multiple fields search with Django-filter from model like:
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)
I need one input field on my website, that can search over all fields of Location model
You can probably create a custom filter and do something like this:
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)
)
This would filter by any of of those fields. You can replace the icontains
with whatever you want.