К сожалению, нет.
Проблема в том, что класс ModelResource в Tastypie использует метод filter () только QuerySet, то есть он не использует exclude (), который следует использовать для отрицательных фильтров. Однако нет поиска по полю filter (), который бы означал отрицание. Допустимые поиски (после этого ТАК ):
exact
iexact
contains
icontains
in
gt
gte
lt
lte
startswith
istartswith
endswith
iendswith
range
year
month
day
week_day
isnull
search
regex
iregex
Однако не должно быть так сложно реализовать поддержку чего-то вроде "__not_eq". Все, что вам нужно сделать, это изменить метод apply_filters () и отделить фильтры с помощью «__not_eq» от остальных. Затем вы должны передать первую группу в exclude (), а остальные в filter ().
Что-то вроде:
def apply_filters(self, request, applicable_filters):
"""
An ORM-specific implementation of ``apply_filters``.
The default simply applies the ``applicable_filters`` as ``**kwargs``,
but should make it possible to do more advanced things.
"""
positive_filters = {}
negative_filters = {}
for lookup in applicable_filters.keys():
if lookup.endswith( '__not_eq' ):
negative_filters[ lookup ] = applicable_filters[ lookup ]
else:
positive_filters[ lookup ] = applicable_filters[ lookup ]
return self.get_object_list(request).filter(**positive_filters).exclude(**negative_filters)
вместо значения по умолчанию:
def apply_filters(self, request, applicable_filters):
"""
An ORM-specific implementation of ``apply_filters``.
The default simply applies the ``applicable_filters`` as ``**kwargs``,
but should make it possible to do more advanced things.
"""
return self.get_object_list(request).filter(**applicable_filters)
должен учитывать следующий синтаксис:
someapi.com/resource/pk/?field__not_eq=value
Я не проверял это. Возможно, это тоже можно было бы написать более изящно, но это должно помочь вам:)