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)
I好き嫌いをしたいe:
xyz.com/tag?level=40/
レベル40のすべてのアイテムを表示する。
django-filter(DjangoFilter Sと間違えてはいけません)を使用して、私は新しいfilters.pyファイルを作成しました。
しかし、結果は決してフィルタリングされません。私がAPIのURLを打つと、それは私にすべての結果を与えるだけです。
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'フィールドがでたときにフィールド名です'Tag'モデルは' level'ですか? – AKS
ペーストエラーが修正されました – Ycon
https://github.com/manjitkumar/drf-url-filtersを使用することも検討できます –