Django pagination - Remember checked flags on different pages

I really want to accomplish the same thing as the user in

Remembering checked flags between pages - which is best?

asked. But not for php, I want it for django. Since django is just fine :-)

I use pagination and want to remember the checked checkbox when the user navigates through the pages provided by pagination.

Now I am looking for the best practice on how I could do this. I have no good idea how I can do this. My idea would have included javascript, but I am sure that somewhere there is a solution without js somewhere.

+3
source share
1 answer

paginator. formwizard . , "", . . , !

- :

from django.contrib.formtools.wizard import FormWizard
from django import forms
from django.forms.extras.widgets import CheckboxSelectMultiple
from django.core.paginator import Paginator

# In your forms.py --------------


def MPageFormMaker(paginator):
    """
    Create a "paginated" group of forms based on a queryset and num-per-page item.
    """


    def Sform(this_q):
        """
        Create this page items
        """
        class _PageForm(forms.Form):
            items = forms.ModelMultipleChoiceField(queryset = this_q,
                                widget = forms.CheckboxSelectMultiple)
        return _PageForm

    for i in range(paginator.num_pages):
        yield Sform(paginator.page(i).object_list)


class MpageForm(FormWizard):
    def done(self, request, formlist):
        #do something with the list of forms


#----- In your views.py

def MpageChecker(request):
    qset = Item.objects.all()

    paginator = Paginator(qset, 30)
    formwizard = MPageForm(list(MPageFormMaker(paginator)))

    #then deal with it like a normal formwizard

formwizard, . paginator , , .

BTW: , , , .

... , !

+1

Source: https://habr.com/ru/post/1726843/


All Articles