gpt4 book ai didi

django 分页 - 记住跨页面选中的复选框

转载 作者:行者123 更新时间:2023-12-02 11:27:25 25 4
gpt4 key购买 nike

我实际上想完成与用户相同的事情

Remembering checked checkboxes across pages - what's the best way?

问道。但不适用于 php,我想要它用于 django。因为 django 非常棒:-)

我正在使用分页,并且希望在用户浏览分页提供的页面时记住选中的复选框。

现在我正在寻找如何实现这一目标的最佳实践。我真的不知道如何才能做到这一点。我的想法是包含 javascript,但我确信有一个不需要 js 的解决方案。

最佳答案

我想不出任何方法可以使用分页器来做到这一点。但这是 formwizard 的好地方。和 dynamic forms 。总体思路是为每个“页面”创建一个动态表单,然后使用表单向导将它们组合在一起。这允许跨多个页面保存复选框,并让您轻松地前后移动。最好的事情是它几乎不需要任何代码!

像这样的东西应该能够处理所有事情:

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's 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 类,然后让它处理一切。由于它使用分页器类来制作表单,因此您可以使用您想要的任何类型的个性化设置。

顺便说一句:我还没有测试过这段代码,所以它可能有一些拼写错误,但它应该足以让你上路。

编辑...修复排序问题,现在所有排序都应该跨页面正确保留!

关于django 分页 - 记住跨页面选中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com