Filters

Filters convert query parameters into MongoDB query conditions automatically.

Define a FilterSet

Inherit FilterSet and declare fields:

from flask_mongo_drf import FilterSet, CharFilter, NumberFilter

class UserFilter(FilterSet):
    name = CharFilter(lookup_expr='icontains')   # case-insensitive contains
    age = NumberFilter(lookup_expr='gte')        # greater than or equal

Usage in ViewSet

Set filterset_class in ViewSet:

class UserViewSet(MongoModelViewSet):
    model_class = UserModel
    filterset_class = UserFilter

Then clients can send: GET /users/?name=john&age__gte=18

Built-in Filter Types

  • CharFilter — string fields

  • NumberFilter — numeric fields

  • BooleanFilter — boolean fields

  • DateFilter — date fields

  • ObjectIdFilter — ObjectId fields

Supported Lookup Expressions

exact, iexact, contains, icontains, gt, gte, lt, lte, ne, in, exists