Additional Logic on Forms
Project description
in forms.py
from alo import forms from alo.operators import AND, OR class BookForm(forms.QueryForm): # Django form fields year = forms.IntegerField(required=False, min_value=1970, max_value=2012) title = forms.CharField(required=False) genre = forms.CharField(required=False) author = forms.CharField(required=False) house = forms.CharField(required=False) class Meta: lookups = { # query_name: model_field__lookups 'year': 'publication_date__year', 'title': 'title__icontains', 'genre': 'genres', 'author': 'author_id', 'house': 'publishing_house__id', } extralogic = [ # Combine the form fields with boolean logic AND('genres', OR('author', 'publishing_house')) # if 'genre' provided, so should also be either 'author' or 'house' OR('title', 'year', required=True) # either 'year' or 'title' must be provided ] class BookModelForm(forms.QueryModelForm): class Meta: model = Book fields = ( 'publication_date', 'title', 'genres', 'author', 'publishing_house' ) lookups = { # query_name: model_field__lookups 'publication_date': 'publication_date__year', 'title': 'title__icontains', } extralogic = [ # Combine the form fields with boolean logic AND('genres', OR('author', 'publishing_house')) ]
in views.py
from .forms import BookForm from .models import Book def example(request): form = BookForm(request.GET) if form.is_valid(): # form.parameters is like form.cleaned_data but # with lookups applied and without empty values Book.objects.filter(**form.parameters) ... ...
There is more! Check the full documentation here
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-alo-forms-1.9.0.tar.gz
(6.9 kB
view hashes)
Built Distribution
Close
Hashes for django_alo_forms-1.9.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5895b92f59f5e1aefbfa4a014142fdbde98efd892faa89b321676514ca234d72 |
|
MD5 | 909ce8fe17b0f66e849022f424faa479 |
|
BLAKE2b-256 | 0e12ab20ca67dd0060e3827955435e141900fe2ddb0d833dcc53eb0feface369 |