django-modelqueryform is a flexible app that helps you build Q object generating forms.
It is a great tool if you want you users to be able to do filtered searches against your models.
The project can be found at https://github.com/ckirby/django-modelqueryform
The full documentation is at https://django-modelqueryform.readthedocs.org.
- Django 1.11+
- Python 3.4+
Useable default FormFields for ModelFields that:
- Have .choices defined or are inherently made of choices (ie. BooleanField and NullBooleanField)
- Are represented as numeric types (eg. IntegerField, FloatField, etc.)
- Text backed fields need code written to handle them. That is easy though, because:
Creation of FormFields, Q objects, and User readable query terms are completely customizable. You can target ModelFields:
- By name (If the field has specific requirements)
- By field type (Use the same widget or Q object builder for all CharFields)
Can follow Model relationships or treat relationship fields as .choices
Provides a new Field and Widget (RangeField, RangeWidget). These allow users to generate a __gte, __lte pair for the orm, optionally also including an __isnull
RangeField
- Dynamically generates min and max boundaries. (Aggregate Min and Max on the model field)
- If null=True on the ModelField allows user to indicate if they want to include null values in the query
RangeWidget
- Returns a MultiWidget with 2 NumberInput widgets (with min and max attributes)