In my project I use django rest framework. To filter the results I use django_filters backend. There is my code:
models.py
from django.db import modelsclass Region(models.Model):name = models.CharField(max_length=100, blank=True, null=False)class Town(models.Model):region = models.ForeignKey(Region)name = models.CharField(max_length=100, blank=True, null=False')
filters.py
import django_filters
from models import Townclass TownFilter(django_filters.FilterSet):region = django_filters.CharFilter(name="region__name", lookup_type="contains")town = django_filters.CharFilter(name="name", lookup_type="contains")class Meta:model = Townfields = ['region', 'town']
views.py
from models import Town
from rest_framework import generics
from serializers import TownSerializer
from filters import TownFilterclass TownList(generics.ListAPIView):queryset = Town.objects.all()serializer_class = TownSerializerfilter_class = TownFilter
So, I can write ?region=Region_name&town=Town_name to the end of the request url, and the result will be filtered.
But I want to use only one get param in the request url, which can have region or town name as value. For example ?search=Region_name and ?search=Town_name. How can I do this?