我通过Django-filter添加了一个价格范围过滤器,但似乎不起作用。
filters.py
from django_filters import FilterSet
from .models import Apartment
class ApartmentFilter(FilterSet):
class Meta:
model = Apartment
fields = {
'price': ['lt','gt']
}
views.py
class ApartmentViewSet(viewsets.ModelViewSet):
queryset = Apartment.objects.all().order_by('-timestamp')
serializer_class = ApartmentSerializer
permission_classes = [
permissions.IsAuthenticatedOrReadOnly, IsOwnerApartmentOrReadOnly]
filter_backends = [filters.SearchFilter,
DjangoFilterBackend, filters.OrderingFilter]
filter_class = ApartmentFilter
search_fields = ['address']
filterset_fields = ['category', 'district']
ordering_fields = ('price',)
2条答案
按热度按时间50pmv0ei1#
您可以使用内置的
RangeFilter
:然后,在请求参数中将其作为
price_min
和price_max
发送。例如
<your_api_endpoint>/?price_min=100&price_max=200
7uhlpewt2#
有关文档here的更多信息