Skip to content

bpereto/django-q-filter

Repository files navigation

Django Q Filter

build-status-image coverage-status-image pypi-version

complex filtering based on Django Q

Overview

Use the power of Django Q Objects to filter django models with complex queries. Django Q Filter provides filter forms (based on bootstrap and jQuery) and utils for complex query filters.

The filter form selects the possible django model fields dynamically and computes a Q-Query with the given input. Q-Filter Wizard

the resulting queryset is automatically annotated with the field and values of the given Q-Query. results of a Q-Query are always a "joined" style list and to enhance the experience, a normalized result set can be computed, where the values can be merged.

Q-Filter Wizard

For demo purposes, an example project is provided.


Requirements

  • Python (3.6, 3.7, 3.8, 3.9)
  • Django (2.2, 3.0, 3.1)
  • django-crispy-forms

Installation

Install using pip...

pip install django-q-filter

Add 'qfilter' to your INSTALLED_APPS setting.

    INSTALLED_APPS = [
        ...
        'qfilter',
    ]

Use Q-Filter mixin in django views. See example project.

# example/food/views.py

class RecipeListView(QQueryViewMixin, ListView):
    """
    Recipe List View
    """
    model = Recipe
    template_name = 'food/recipe_list.html'
    ordering = ['name']