Comments (4)
Hello! Thanks for describing what you were hoping to do.
Commits 0ff5d41 and 8abeb12 should address this issue.
I've added a method called get_json_response_object()
which builds the dictionary that will get serialized. It receives the filtered object_list
and then handles pagination, and finally returns the python dictionary that will later be serialized.
This allows you to call super()
to get the normal response dictionary, and then just add to it. In your case, you can examine object_list
and it will not be limited by the paging. (If you still wanted to look at the paging, you can run it through self.paginate_object_list(object_list)
again, but be wary of performance issues, since object_list
can potentially be a queryset, not a list, for query performance boosts.)
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.
from django-datatable-view.
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.
from django-datatable-view.
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()
from django-datatable-view.
To be clear, the object_list
parameter is indeed a filtered version (after the stuff from apply_queryset_options
happens), it just hasn't been cut down to the current page of results yet. That happens inside of the call to super().get_json_response_object()
.
My reasoning was that it let's the paging happen as late as possible, provides access to the filtered version of object_list
without paging, and is a much nicer method override in the worst case scenario.
Best of luck!
from django-datatable-view.
Related Issues (20)
- Double initialization of DatatableView HOT 3
- Table not rendering - compatibility with Django 2 and Python 3? HOT 2
- Can't run in production - Ajax error HOT 1
- GenericIPAddressField HOT 1
- columns based on a queryset HOT 1
- Bootstrap 4 (or later)?
- example_project, when run " manage.py migrate", error occurs!!! HOT 3
- Django 3.1.3 support HOT 2
- ImportError: cannot import name 'get_field_definition (django 3.1.3) HOT 1
- ImportError: cannot import name 'get_datatable_structure' (django 3.1.3) HOT 2
- Unable to search or sort columns with processor but no sources HOT 3
- Performance issues with many (50-100+) x-editable columns
- pypi updates HOT 3
- Column with Foreignkey - limit_choices_to not working as intended
- Selecting rows over several pages with select all HOT 1
- Chain AND searches
- Doesnt work with AWS load balancer HOT 1
- Example Project Missing
- Cannout use distinct on get_initial_queryset()
- How to add buttons for download csv and excel
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-datatable-view.