Bonjour,
je fais suite à mon poste précédent. Je suis toujours en python3, bdd postgress et travail dans un docker-compose.
J'ai un tableau généré avec tables2. J'aimerais y ajouter un filtre sur certaines colonnes. J'avais dans l'idée d'utiliser django-filter, sauf que je n'y arrive pas. Voilà ce que j'ai aujourd'hui :
Voici ce que je souhaiterais obtenir :
Cette image a été obtenu avec un autre package, sauf que le filtre ne prend pas en compte les accents ... Cf poste précèdent ...
Je vous mets mon code actuel :
view.py
tables.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 from django_tables2 import SingleTableView from django_filters.views import FilterView #from de mon projet class IndicationListView(SingleTableView, FilterView): model = models.Indication table_class = IndicationTable #tables.py template_name = 'cor/indicationList.html' filterset_class = IndicationFilter #filters.py
filters.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 mport django_tables2 as tables from django.utils.safestring import mark_safe #from vers mon model class IndicationTable(tables.Table): details = tables.TemplateColumn(verbose_name = "Details", template_name="cor/action.html", orderable=False) patient__typeP = tables.Column(verbose_name = "Patient") flo__localisation__name = tables.Column(verbose_name = "Localisation") class Meta: model = models.Indication template_name = "django_tables2/bootstrap.html" fields = ("details", "patient__typeP", "flo__localisation__name", )
template.html sans le filtre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 import django_filters #from vers mon model class IndicationFilter(django_filters.FilterSet): patient__typeP = django_filters.CharFilter() class Meta: model = models.Indication fields = ['patient__typeP',]
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 {% extends 'base.html' %} {% load render_table from django_tables2 %} {% load bootstrap3 %} <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> {% block content %} {% render_table table %} {% endblock %}
template.html avec le filtre (au dessus du tableau normalement pour tester) qui ne s'affiche pas ...
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 {% extends 'base.html' %} {% load render_table from django_tables2 %} {% load bootstrap3 %} <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> {% block content %} {% if filter %} <form action="" method="get" class="form form-inline"> {% bootstrap_form filter.form layout='inline' %} {% bootstrap_button 'filter' %} </form> {% endif %} {% render_table table 'django_tables2/bootstrap.html' %} {% endblock %}
Aujourd'hui, aucun filtre ne s'affiche, même au dessus du tableau....
J'ai aussi essayé d'adapter l'exemple du tuto : https://django-filter.readthedocs.io...ide/usage.html . J'ai l'impression que c'est un problème au niveau du html et/ou dans ma façon de construire de filtre côté Django.
Merci par avance pour votre aide
Partager