显示模型中的所有数据,并使用复选框批量编辑所有数据

时间:2019-05-30 11:17:31

标签: django django-models django-forms

我正在尝试创建一个页面,该页面可以允许用户使用复选框编辑多行数据。我知道js可以完成这项工作,但是我对js的了解有限。是否有使用Django Form和Widgets的方法?

1 个答案:

答案 0 :(得分:0)

当然可以使用Django过滤器(或仅使用具有固定QuerySet的ListView)来生成带有复选框的多行HTML表单。一旦用户过滤出要更新的内容,他将单击复选框,在行中填写一些字段,然后单击表单提交按钮(您必须在模板中进行编码)而不是过滤器按钮。

表单数据将回发到您编写的URL,然后视图必须循环显示为原始request.POST数据的行。如果选中了该复选框,则可以使用右键将输入的该行的其余所有原始数据从request.POST收集到dict中,以馈入Django表单。验证并以常规方式保存。

换句话说,您纯粹是在使用表单进行验证。根本不生成任何HTML。您需要更多的HTML技能来编写可作为表单呈现的视图模板,但不涉及JS(除了Bootstrap的适当类和div或您使用的任何总体方案之外)。

它与Django表单不同,因为很难通过用户键入的内容重新显示该表单,以供用户在验证失败后预先填写以解决问题。如果用户正在更新“没错”的内容(例如“是/否”选项或注释字段),则为最佳选择。

如果第N行未能通过验证,则需要考虑数据库的完整性。如果所有行都是独立的,则足以告诉用户哪些更新失败。否则,您可能希望使其成为事务,以便在失败时可以完全回滚。