Filter in django rest framework

In meinem Projekt verwende ich django rest framework. Um die Ergebnisse zu filtern ich benutze django_filters backend.
Es ist mein code:

models.py

from django.db import models


class 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 Town


class 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 = Town
        fields = ['region', 'town']

views.py

from models import Town
from rest_framework import generics
from serializers import TownSerializer
from filters import TownFilter


class TownList(generics.ListAPIView):
    queryset = Town.objects.all()
    serializer_class = TownSerializer
    filter_class = TownFilter

So, ich kann schreiben,?region=Region_name&Stadt=Town_name am Ende der Anfrage-url, und das Ergebnis gefiltert werden.

Aber ich will mit nur einem get-Parameter in der request-url, die region oder Stadt name als Wert. Zum Beispiel ?Suche=Region_name und ?Suche=Town_name. Wie kann ich dies tun?

InformationsquelleAutor Albert Iskhakov | 2014-03-26

Schreibe einen Kommentar