pass url params into filters/qs

This commit is contained in:
Aaron Kable
2026-01-08 17:45:26 +08:00
parent aec055b542
commit de43114681

View File

@@ -34,7 +34,7 @@ class DataTablesView(View):
self.searchable_as_regex_regex = re.compile(self.COL_SEARCHABLE_AS_REGEX_REGEX) self.searchable_as_regex_regex = re.compile(self.COL_SEARCHABLE_AS_REGEX_REGEX)
self.order_regex = re.compile(self.COL_ORDERABLE_REGEX) self.order_regex = re.compile(self.COL_ORDERABLE_REGEX)
def get_model_qs(self, request: HttpRequest): def get_model_qs(self, request: HttpRequest, *args, **kwargs):
return self.model.objects return self.model.objects
def get_param(self, request: HttpRequest, key: str, cast=str, default=""): def get_param(self, request: HttpRequest, key: str, cast=str, default=""):
@@ -101,6 +101,7 @@ class DataTablesView(View):
) )
def get(self, request: HttpRequest, *args, **kwargs): def get(self, request: HttpRequest, *args, **kwargs):
# Get all our Params out of GET # Get all our Params out of GET
length = self.get_param(request, "length", int) length = self.get_param(request, "length", int)
start = self.get_param(request, "start", int) start = self.get_param(request, "start", int)
@@ -118,7 +119,7 @@ class DataTablesView(View):
# Build response rows # Build response rows
items = [] items = []
qs = self.get_model_qs(request).filter(filter_q).order_by() qs = self.get_model_qs(request, *args, **kwargs).filter(filter_q).order_by()
# Apply ordering # Apply ordering
order = self.order_str(order_col, order_dir, column_conf) order = self.order_str(order_col, order_dir, column_conf)
@@ -127,7 +128,7 @@ class DataTablesView(View):
# build output # build output
for row in qs[start:limit]: for row in qs[start:limit]:
ctx = {"row": row} ctx = {"note": row}
row = [] row = []
for t in self.columns: for t in self.columns:
row.append(self.render_template(request, t[1], ctx)) row.append(self.render_template(request, t[1], ctx))
@@ -136,7 +137,7 @@ class DataTablesView(View):
# Build our output dict # Build our output dict
datatables_data = {} datatables_data = {}
datatables_data['draw'] = draw datatables_data['draw'] = draw
datatables_data['recordsTotal'] = self.get_model_qs(request).all().count() datatables_data['recordsTotal'] = self.get_model_qs(request, *args, **kwargs).all().count()
datatables_data['recordsFiltered'] = qs.count() datatables_data['recordsFiltered'] = qs.count()
datatables_data['data'] = items datatables_data['data'] = items