Templates HTML
Caso seja necessário customizar algo no template HTML abaixo temos as instruções de como proceder
Importando arquivo js
-
Na view, importar do filter.py o filtro especifico que vai utilizar na view.
-
Importar também do django_filter.views o FilterView.
-
A classe que vai utilizar o filtro, vai herdar o FilterView. (Coloque Filter no nome da classe para melhor visualização ( ExempleFilterView ))
-
Dentro da classe que herdou o FilterView, junto com o padrão Class Base View, declare filterset_class recebendo o filtro que foi importando do arquivo filter.py.
(filterset_class = ExempleFilter)
Exemplo:
from django_filter.views import FilterView
class ExemploListView(FilterView):
"""Classe para gerenciar a listagem do Exemplo"""
model = Exemplo
template_name = "usuario/exemplo_listfilter.html"
context_object_name = 'exemplo'
list_display = ['nome', 'email', 'cpf'']
filterset_class = ExemploFilter
No arquivo html
-
No arquivo html o filtro vem pela tag filter.
-
A tag filter tem que ser utilizada dentro da tag html de form para funcionar.
-
Por padrão ela não vem com um botão para submit, só vem com os inputs e labels.
-
Pode ser utilizado filter.form que vai herdar o css geral caso utilize template, ou filter.form.as_p que vai renderizar o form basico mais oque for configurado no arquivo filter.py no metodo init.
-
Também pode só chamar um input de filtragem especifico, chamando filter.form."campo" (exemplo: filter.form.nome), e tambem chamar só o label. filter.form."campo".label
Exemplo:
<form method="get" >
<div class="row">
# chamado o formulario de filtro baseado na classe meta (o css vai vir herdada do template)
{{ filter.form }}
# chamado o formulario de filtro baseado no metodo __init__(o css sera basico e vai ter q fazer manualmente)
{{ filter.form.as_p }}
# somente o input de nome
{{ filter.form.nome }}
# somente o label de nome
{{ filter.form.nome.label }}
<div class="col-2">
<button class="btn btn-success form-control" type="submit">Buscar</button>
</div>
</div>
</form>