drf-mongo-filters
drf-mongo-filters copied to clipboard
[UNMAINTAINED] Filtering tools for django rest framework mongoengine.
drf-mongo-filters
Filtering tools for django rest framework mongoengine. Very similar to django-filters.
Sinopsis
Declare filters for each query argument and bind it to Filterset:
class SomeFilterset(Filterset):
foo = filters.CharFilter()
bar = filters.CharFilter('contains')
Apply filters to queryset:
fs = SomeFilterset(QueryDict("foo=Foo&bar=Bar"))
qs = fs.filter_queryset(qs)
# equal to
qs.filter(foo="Foo").filter(bar__contains="Bar")
Auto generate filters for each model field with equality comparision:
class SomeFilterset(ModelFilterset):
class Meta:
model=SomeDoc
Set backend to apply filtering automatically in GenericAPIView.filter_queryset
, usually called from ListModelMixin.list
:
class TestView(ListAPIView):
filter_backends = (MongoFilterBackend,)
filter_class = SomeFilterset
Implemented filters
-
BooleanFilter
: parses boolean val usingNullBooleanField
-
ExistsFilter
: parses boolean, filters withfoo_exists=val
-
CharFilter
: takes string -
UUIDFilter
: parses uuid -
IntegerFilter
: parses int -
FloatFilter
: parses float -
DateTimeFilter
: parses datetime usingserializers.DateTimeField
-
DateFilter
: parses date, filters datetimes with withgte
andlte
to match whole day -
ObjectIdFilter
: parsesbson.ObjectId
-
ListFilter
: gathers all values with same name; optionally parses with field, specified with argumentchild
-
AnyFilter
: filters withfoo_in=[vals]
-
NoneFilter
: filters withfoo_nin=[vals]
-
AllFilter
: filters withfoo_all=[vals]
-
DictFilter
: gathers all values prefixed with same name; optionally parses with field, specified with argumentchild
-
RangeFilter
: takesfoo.min&foo.max
and flters withgte
andlte
-
GeoNearFilter
: parses geopoint fromfoo.lng&foo.lat
, converts to GeoJSON Point and filters withnear
operator -
GeoDistanceFilter
: parses float and filters withmax_distance
operator
API
See docstrings for details.
Filter
class
Attributes:
-
field_class
: class used to create serializer field -
lookup_type
: operator to use for matching
Filter(lookup=None, name=None, **kwargs)
Args:
-
lookup
: override matching operator -
name
: override binding name -
kwargs
: args to initialize field, in particular:source
specifies model attribute to compare
Filterset
Filterset(data=None)
Arg:
-
data
: QueryDict or dict containing filtering params
filter_queryset(queryset)
Applies all filters to queryset.
ModelFilterset
class
Attribs:
- default_filters_mapping: mapping of field classes to filter classes
- filters_mapping: to override defaults
Meta:
-
model
: document definition to examine -
fields
: restrict fields to given list -
exclude
: exclude fields from examining -
kwargs
: mapping of field names to args for filters