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.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
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):
# Get all our Params out of GET
length = self.get_param(request, "length", int)
start = self.get_param(request, "start", int)
@@ -118,7 +119,7 @@ class DataTablesView(View):
# Build response rows
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
order = self.order_str(order_col, order_dir, column_conf)
@@ -127,7 +128,7 @@ class DataTablesView(View):
# build output
for row in qs[start:limit]:
ctx = {"row": row}
ctx = {"note": row}
row = []
for t in self.columns:
row.append(self.render_template(request, t[1], ctx))
@@ -136,7 +137,7 @@ class DataTablesView(View):
# Build our output dict
datatables_data = {}
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['data'] = items