-
Notifications
You must be signed in to change notification settings - Fork 142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Filter object_list later in serialize_to_json for easy calculation of whole dataset #20
Comments
This addresses the need to potentially return additional data fields in the response for client-side operations. serialize_to_json() now takes the python dictionary of data compiled by the new get_json_response_object(). /cc #20
As per #20, there were no hooks where it was feasible to analyze the full result list, after searches but before pagination
Hello! Thanks for describing what you were hoping to do. Commits 0ff5d41 and 8abeb12 should address this issue. I've added a method called This allows you to call This should now be possible if you pull from the latest dev commits, copied from your example: class MyDatatableView(DatatableView):
datatable_options = { ... }
def get_json_response_object(self, object_list, *args, **kwargs):
data = super(MyDatatableView, self).get_json_response_object(object_list, *args, **kwargs)
# Do some things here with your FULL object list
debit_rental = 0
credit_rental = 0
sum_rental = 0
for obj in object_list:
if obj.debit:
debit_rental += obj.rental
else:
credit_rental += obj.rental
data['sum_rental'] = credit_rental - debit_rental
return data If this looks good and feels like it does the right thing, I'll close this and put it into a proper release so that you can upgrade to the latest via pip. |
Whow - that was fast. Tnx for making my first "report" here on github such a success story :) Exactly what I (and maybe some more users) needs to solve this case. |
Short addition: Since the filtering is done now inside get_json_response_object there is no chance to use super if we need the filtered object_list, but this should be no problem since get_json_response_object() is a lot shorter then overwriting the big apply_queryset_options() |
To be clear, the My reasoning was that it let's the paging happen as late as possible, provides access to the filtered version of Best of luck! |
First tnx for this great django binding! I integrated it and wanted something similar as her: http://datatables.net/examples/advanced_init/footer_callback.html. As soon I edited it for my needs I realized, that the view (of course) paginates the data sending to the table, so that no calculation on the WHOLE dataset is possible in the client in js.
So I googled again and came up, with the possibility of giving custom server side data to the table: http://stackoverflow.com/questions/6090260/jquery-datatables-return-additional-information-from-server (should be faster anyway)
So I came up with the following solution (sorry for not making a diff - first post her on github):
removing the last lines in apply_queryset_options and moving them to
With this edit it would be easy to do so with just overwriting serialize_to_json.
The text was updated successfully, but these errors were encountered: