L'on me demande de filtrer via des boutons ou cases à cocher les données d'une datatable.
Me suis dit "commence par une case à cocher" qui permettra de n'affiche que les lignes en anomalies (cf sAnoma)...
Mais avec cela :
tout tourne côté serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 "sAjaxSource": '{% url "api:transaction_list" %}', "order": [[ 0, "desc" ]], "bProcessing": true, "bServerSide": true,
A la suite de la définition de la datatable, ai donc placé :
Dans la vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $("#chk_anomalie").on("click", function (event) { $.ajax({ url: "{% url "api:transaction_list" %}", type: "POST", data: { sAnoma: $('#chk_anomalie').is(':checked') }, }).done(function (result) { table.clear().draw(); table.rows.add(result).draw(); }) });
Cela fonctionne mais il me faut apparement une fonction "post", une fonction get_objet ? get_context_data ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class TransactionListAPIView(ListAPIView): queryset = Transaction.objects.all() pagination_class = DatatablePagination serializer_class = TeamTransactionListSerializer permission_classes = (permissions.IsAuthenticated,) authentication_classes = (TokenAuthentication, SessionAuthentication,) def get_queryset(self): qs = self.queryset if self.request.POST and self.request.POST['sAnoma']: qs = qs.filter(Q(anomaly__iexact=self.request.POST['sAnoma'])) .../...
Au secours, si quelqu'un à déjà pratiqué ce genre de chose...
Partager