Giter Club home page Giter Club logo

Comments (4)

tiliv avatar tiliv commented on May 27, 2024

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.

foobar76 avatar foobar76 commented on May 27, 2024

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.

foobar76 avatar foobar76 commented on May 27, 2024

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.

tiliv avatar tiliv commented on May 27, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.