{ "info": { "author": "Artur Barseghyhan", "author_email": "artur.barseghyan@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "=========================\ndjango-mongoengine-filter\n=========================\n`django-mongoengine-filter` is a reusable Django application for allowing users\nto filter `mongoengine querysets`_ dynamically. It's very similar to\npopular `django-filter` library and is design to be used as a drop-in\nreplacement (as much as it's possible) strictly tied to `MongoEngine`.\n\nFull documentation on `Read the docs`_.\n\n.. image:: https://img.shields.io/pypi/v/django-mongoengine-filter.svg\n :target: https://pypi.python.org/pypi/django-mongoengine-filter\n :alt: PyPI Version\n\nRequirements\n============\n* Python 2.7, 3.5, 3.6, 3.7\n* Django 1.11, 2.0, 2.1, 2.2\n\nInstallation\n============\nInstall using pip:\n\n.. code-block:: sh\n\n pip install django-mongoengine-filter\n\nOr latest development version:\n\n.. code-block:: sh\n\n pip install https://github.com/barseghyanartur/django-mongoengine-filter/archive/master.zip\n\nUsage\n=====\n**Sample document**\n\n.. code-block:: python\n\n from mongoengine import fields, document\n from .constants import PROFILE_TYPES, PROFILE_TYPE_FREE, GENDERS, GENDER_MALE\n\n class Person(document.Document):\n\n name = fields.StringField(\n required=True,\n max_length=255,\n default=\"Robot\",\n verbose_name=\"Name\"\n )\n age = fields.IntField(required=True, verbose_name=\"Age\")\n num_fingers = fields.IntField(\n required=False,\n verbose_name=\"Number of fingers\"\n )\n profile_type = fields.StringField(\n required=False,\n blank=False,\n null=False,\n choices=PROFILE_TYPES,\n default=PROFILE_TYPE_FREE,\n )\n gender = fields.StringField(\n required=False,\n blank=False,\n null=False,\n choices=GENDERS,\n default=GENDER_MALE\n )\n\n def __str__(self):\n return self.name\n\n**Sample filter**\n\n.. code-block:: python\n\n import django_mongoengine_filter\n\n class PersonFilter(django_mongoengine_filter.FilterSet):\n\n profile_type = django_mongoengine_filter.StringFilter()\n ten_fingers = django_mongoengine_filter.MethodFilter(\n action=\"ten_fingers_filter\"\n )\n\n class Meta:\n model = Person\n fields = [\"profile_type\", \"ten_fingers\"]\n\n def ten_fingers_filter(self, queryset, name, value):\n if value == 'yes':\n return queryset.filter(num_fingers=10)\n return queryset\n\n**Sample view**\n\nWith function-based views:\n\n.. code-block:: python\n\n def person_list(request):\n filter = PersonFilter(request.GET, queryset=Person.objects)\n return render(request, \"dfm_app/person_list.html\", {\"object_list\": filter.qs})\n\nOr class-based views:\n\n.. code-block:: python\n\n from django_mongoengine_filter.views import FilterView\n\n class PersonListView(FilterView):\n\n filterset_class = PersonFilter\n template_name = \"dfm_app/person_list.html\"\n\n**Sample template**\n\n.. code-block:: html\n\n