1 pièce(s) jointe(s)
Django - filtrer datatable via Ajax et POST
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 :
Code:
1 2 3 4 5
|
"sAjaxSource": '{% url "api:transaction_list" %}',
"order": [[ 0, "desc" ]],
"bProcessing": true,
"bServerSide": true, |
tout tourne côté serveur.
A la suite de la définition de la datatable, ai donc placé :
Code:
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();
})
}); |
Dans la vue :
Code:
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']))
.../... |
Cela fonctionne mais il me faut apparement une fonction "post", une fonction get_objet ? get_context_data ?
Au secours, si quelqu'un à déjà pratiqué ce genre de chose...