Я хочу отфильтровать объекты по id. как это ниже.
получить более 12, от 6 до 12, что-то вроде этого ..
Я установил RangeFilter()
, как это, но он показывает только равные. не более чем, менее
class MyTextFilter(filters.FilterSet):
my_text = filters.CharFilter(lookup_expr='contains')
id = filters.RangeFilter()
class Meta:
model = MyText
fields = ('id','myText')
Благодаря ответу @Mohammad Ali
Я изменяю код следующим образом, но все равно ошибка invalid literal for int() with base 10: 'id'
.
from django_filters import rest_framework as filters
class MyTextFilter(filters.FilterSet):
my_text = filters.CharFilter(lookup_expr='contains')
id = filters.CharFilter(method='id_filter')
class Meta:
model = MyText
fields = ('id','myText')
def id_filter(self, queryset, value, *args, **kwargs):
return queryset.filter(id>int(value))
Наконец-то я решил проблему с этим.
return queryset.filter(id__gte=args[0])