Django 表单集分页

2023-11-24

我有一个模型表单集,我想使用 Django 的 Paginator 一次显示 10 个表单,但不能像这样完成paginator = Paginator(formset, 10)。如果有办法的话,正确的方法是什么?


这是我发现的问题解决方案的通用示例:

In the forms.py file:

class MyForm(ModelForm):
    class Meta:
        model = MyModel
        fields = ('description',)

In the views.py file:

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

FormSet = modelformset_factory(MyModel, form=MyForm, extra=0)
if request.method == 'POST':
    formset = FormSet(request.POST, request.FILES)
    # Your validation and rest of the 'POST' code
else:
    query = MyModel.objects.filter(condition)
    paginator = Paginator(query, 10) # Show 10 forms per page
    page = request.GET.get('page')
    try:
        objects = paginator.page(page)
    except PageNotAnInteger:
        objects = paginator.page(1)
    except EmptyPage:
        objects = paginator.page(paginator.num_pages)
    page_query = query.filter(id__in=[object.id for object in objects])
    formset = FormSet(queryset=page_query)
    context = {'objects': objects, 'formset': formset}
    return render_to_response('template.html', context,
                              context_instance=RequestContext(request))

您需要使用当前页面中的对象创建表单集,否则,当您尝试执行以下操作时formset = FormSet(request.POST, request.FILES)在 POST 方法中,Django 引发 MultiValueDictKeyError 错误。

In the template.html file:

{% if objects %}
    <form action="" method="post">
        {% csrf_token %}
        {{ formset.management_form }}
        {% for form in formset.forms %}
            {{ form.id }}
            <!-- Display each form -->
            {{ form.as_p }}
        {% endfor %}
        <input type="submit" value="Save" />
    </form>

    <div class="pagination">
        <span class="step-links">
            {% if objects.has_previous %}
                <a href="?page={{ objects.previous_page_number }}">Previous</a>
            {% endif %}

            <span class="current">
                Page {{ objects.number }} of {{ objects.paginator.num_pages }}
            </span>

            {% if objects.has_next %}
                <a href="?page={{ objects.next_page_number }}">next</a>
            {% endif %}
        </span>
    </div>
{% else %}
    <p>There are no objects.</p>
{% endif %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 表单集分页 的相关文章

随机推荐

  • MySQL:存储过程中的 IF / THEN 语句

    我正在编写一个使用多个 IF THEN 语句的存储过程 如果它们的计算结果为 true 则还需要执行多个查询 问题是 我似乎找不到任何适当语法的示例 来自MySQL 开发手册 似乎我可以在 statement list 中进行多个查询 但到
  • Thread.sleep 等待时间超出预期

    以下代码 long msBefore System currentTimeMillis Thread currentThread setPriority Thread MAX PRIORITY try Thread sleep 200 ca
  • 查找 MySQL JSON 对象或数组的交集

    问题是关于MySQL MariaDB JSON 函数 如何找到多个 JSON 结构的交集 在 PHP 中 它是使用以下代码完成的 array intersect a b b c 如果我们想象一个名为 JSON INTERSECT 的函数 代
  • 接受来自 scanf 函数的任意数量的输入

    我正在尝试使用读取未知数量的输入scanf功能 int a 100 int i 0 while scanf d a i n i Next part of the code 但是这个函数不会进入代码的下一部分 似乎有一个无限的 while 循
  • Spring - 计划任务 - 优雅关机

    我有一个 Spring Boot 应用程序 其中有一个 Bean 以大约 1 分钟的间隔运行计划任务 并且该 Bean 有一个 PreDestroy方法 是否有解决方案允许当前正在执行的任务在生命周期到达预销毁阶段之前完成 或者至少给定一些
  • 如何管理 AngularJS 中加载指令模板的 404 错误

    在 AngularJS 指令中templateUrl参数是动态定义的 templates content id html 我不想建立规则来检查是否content id值有效并将其管理为 404 错误 即如果模板不存在 服务器在加载模板时返回
  • 如何区分InputBox取消和确定按钮?

    快速提问 我正在使用一个Microsoft VisualBasic Interaction InputBox在我的 C 代码中允许用户将网站添加到列表中 但我不希望他们输入空字符串 因此我会弹出错误窗口 以防发生这种情况 但是 如果用户按
  • 如何删除向量的每个第三个元素?

    我有以下向量 myList c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 如何删除每个第三个元素 不是这样的 myList myList 3 myList myList 6 我需要以下输出 1 2 4 5 7
  • 无法在AWS Lambda函数上使用ES6;如何在 Lambda 中导入 ES6 模块

    我有一个图书馆foo这是用 ES6 编写的 import export并在打字稿中 我有一个应用程序bar它使用foo bar也是用导出和 Typescript 编写的 我想得到bar在 AWS Lambda 上运行 据我所知 我不能使用i
  • =+ Python 运算符语法正确

    我无意中写道 total acc accuracy 代替 total acc accuracy 我在网上搜索没有找到anything 那么发生了什么 为什么 Python 认为我正在输入的内容是什么意思 Computers trust us
  • 从 python BeautifulSoup 的输出中删除新行 '\n'

    我正在使用 python Beautiful soup 来获取以下内容 div class path a href abc a a href def a a href ghi a div 我的代码如下 html doc div class
  • 使用 Google-Maps-iOS-SDK (1.8.1) 时架构 armv7 的未定义符号

    我正在尝试添加使用 cocoapods 0 33 1 的 Google Maps iOS SDK 1 8 1 部署目标版本 iOS 7 0 我添加了这个 Pod pod Google Maps iOS SDK gt 1 8 正确下载并安装了
  • 如何在没有 Storyboard 的情况下在 UITableViewRowAction 中自定义字体和颜色

    我有经典的 TableView 如果您滑动并单击按钮 您可以删除项目 我知道如何在单元格上设置自定义背景 但我找不到如何为其设置自定义字体和颜色 谢谢你的帮助 func tableView tableView UITableView edi
  • java 中的 Servlet - getWriter() 和 getOutputStream()

    为什么在一个实例上ServletResponse both getWriter and getOutputStream 不能被调用吗 一个设计决定 Writer 和 OutputStream 都维护自己的缓冲区 如果您分别创建一个 那么它们
  • 从 ArrayList 创建格式化字符串

    考虑以下代码 ArrayList
  • Unity 的 Mathf.PingPong 实际上是做什么的?

    Unity 文档用于数学乒乓球 says 乒乓球的价值t 因此它永远不会大于length并且永远不会小于0 我知道它正在 0 到 0 之间旋转一个值length 我不明白的是价值是什么t它与 PingPong 的运作方式有何关系 如果我设置
  • 枚举与架构不匹配:jaxb 或 xsd 有问题吗?

    我正在尝试使用 JAXB 来解组这个文件转换为 Java 对象 我知道 J6 中的 SAX 有一个问题 拒绝 maxOccurs 行 我已将其更改为unbounded 然而 当我xjc它 它没有创建我需要的所有类和枚举 例如 应该有一个ed
  • 命令行 perl 脚本中的进度条

    我正在尝试在命令提示符中以 形式打印进度 但它无法正常工作 我想将进度打印为 Status 10 Completed 当 20 完成时 它将显示状态 20 已完成 在同一个地方而不是在新行中 请你帮助我好吗 Code count per c
  • DataTables 插件 - 在 tfoot 标签下方显示滚动条?

    我使用 jQuery DataTables 插件 scrollX true用于水平滚动 为什么上面会出现滚动条tfoot标签 如何让它出现在页脚下方 var table example DataTable scrollX true scro
  • Django 表单集分页

    我有一个模型表单集 我想使用 Django 的 Paginator 一次显示 10 个表单 但不能像这样完成paginator Paginator formset 10 如果有办法的话 正确的方法是什么 这是我发现的问题解决方案的通用示例