0
我正在嘗試使用我的URL進行基本過濾。我嘗試了幾種解決方案,但沒有成功使用帶有DRF的URL進行過濾
請提出一個簡單的解決方案。當然有一個通用的解決方案
這裏是我的代碼:
Models.py
class Tag(models.Model):
name = models.CharField("Name", max_length=5000, blank=True)
level = models.IntegerField("Level", null=True, blank=True)
Views.py
class TagFilterBackend(filters.BaseFilterBackend):
def filter_queryset(self, request, queryset, view):
return queryset.filter(owner=request.user)
Urls.py
router.register(r'tag', TagViewSet)
我希望能夠過濾像e:
xyz.com/tag?level=40/
僅顯示級別爲40的所有項目。
使用django過濾器(不要誤會爲DjangoFilter S),我創建了一個新的filters.py文件。
但是,結果永遠不會被過濾。當我點擊API網址時,它只是給了我所有的結果。
Filter.py
from rest_framework import generics
from django_filters import rest_framework as filters
from Tril.models import Tag
from .serializers import TagSerializer
class TagFilter(filters.FilterSet):
min_price = filters.NumberFilter(level="level", lookup_expr='gte')
max_price = filters.NumberFilter(level="level", lookup_expr='lte')
class Meta:
model = Tag
fields = ['level', 'name']
class ProductList(generics.ListAPIView):
queryset = Tag.objects.all()
serializer_class = TagSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_class = TagFilter
爲什麼'水平= 「級別」''中和FilterSet'是什麼'taglevel'場時,在字段名稱'標記'模型是'水平'而不是? – AKS
修復了最新的粘貼錯誤 – Ycon
您也可以考慮使用https://github.com/manjitkumar/drf-url-filters –