Widget Reference¶
This is a reference document with a list of the provided widgets and their arguments.
- class LinkWidget¶
This widget renders each option as a link, instead of an actual <input>. It has
one method that you can override for additional customizability.
option_string()
should return a string with 3 Python keyword argument
placeholders:
attrs
: This is a string with all the attributes that will be on the final<a>
tag.query_string
: This is the query string for use in thehref
option on the<a>
element.label
: This is the text to be displayed to the user.
- class BooleanWidget¶
This widget converts its input into Python’s True/False values. It will convert
all case variations of True
and False
into the internal Python values.
To use it, pass this into the widgets
argument of the BooleanFilter
:
active = BooleanFilter(widget=BooleanWidget())
- class CSVWidget¶
This widget expects a comma separated value and converts it into a list of string values. It is expected that the field class handle a list of values as well as type conversion.
- class RangeWidget¶
This widget is used with RangeFilter
and its
subclasses. It generates two form input elements which generally act as start/end
values in a range. Under the hood, it is Django’s TextInput
widget and
accepts the same arguments and values. To use it, pass it to widget
argument of
a RangeFilter
:
date_range = DateFromToRangeFilter(widget=RangeWidget(attrs={'placeholder': 'YYYY/MM/DD'}))
- class SuffixedMultiWidget¶
Extends Django’s builtin MultiWidget
to append custom suffixes
instead of indices. For example, take a range widget that accepts minimum and maximum
bounds. By default, the resulting query params would look like the following:
GET /products?price_0=10&price_1=25 HTTP/1.1
By using SuffixedMultiWidget
instead, you can provide human-friendly suffixes.
class RangeWidget(SuffixedMultiWidget):
suffixes = ['min', 'max']
The query names are now a little more ergonomic.
GET /products?price_min=10&price_max=25 HTTP/1.1