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 :

Nom : tables2.png
Affichages : 506
Taille : 5,3 Ko

Voici ce que je souhaiterais obtenir :

Nom : listview.PNG
Affichages : 498
Taille : 17,3 Ko

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
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
tables.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", )
filters.py
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',]
template.html sans le filtre
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