DRF (Django Rest Framework) kullanıyorum.Normal Filtreler Django Rest Framework'de SearchFilter ile birlikte nasıl kullanılır?
ModelViewSet bildirdim ve şimdi bunun üzerine filtre eklemek istiyorum. Ben satırları eklemeden önce mutlaka, başında çalıştı
filter_class = Filter
: Bir Filtre alt sınıfını ilan etti ve bunu uygulamalı gören
class GoodsViewSet(viewsets.ModelViewSet):
class Filter(FilterSet):
class Meta:
model = m.Goods
filter_class = Filter
filter_backends = (SearchFilter, Filter)
search_fields = ['name',]
queryset = m.Goods.objects.all()
serializer_class = s.GoodsSerializer
tarafından söylendi
filter_backends = (SearchFilter, Filter)
search_fields = ['name',]
Ve şimdi arama filtresi, normal filter_class
atlanırken uygulanır. Bir sözcük birlikte çalışamazlar.
Bu nasıl çalışır?
from rest_framework.filters import SearchFilter
from django_filters.rest_framework import DjangoFilterBackend
class GoodsViewSet(viewsets.ModelViewSet):
class Filter(FilterSet):
class Meta:
model = m.Goods
filter_class = Filter
filter_backends = (SearchFilter, DjangoFilterBackend)
search_fields = ['name',]
queryset = m.Goods.objects.all()
serializer_class = s.GoodsSerializer
Ya da belirli bir ViewSet
sınıfına filter_backends
alanı dikkate almayıp, ancak settings.py
dünya çapında uygulamak:
REST_FRAMEWORK = {
# ... other configurations
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.SearchFilter',
'django_filters.rest_framework.DjangoFilterBackend',
),
}
Yani
filter_class'ınızı başka bir sınıf adına yeniden adlandırın? ex. filter_class = My_Custom_Filter – Kishan
@soupboy teşekkürler, bu sorun değil. Bir çözüm buldum ve cevap olarak gönderdim. Sadece cevabı buraya göndermek istiyorum. –
@AlfredHuang Bu konu hakkında blogunuz var mı? Tam uygulamayı görmek istiyorum. Anlamak benim için hala zor. Çözümün ilginç. – Sarit