从Django modelformset中的N froms开始,其中N = leninitial

问题描述

我正在django中使用一个表单集来保存同一Model的多个实例。

我不打算使用表单集来编辑该模型的现有实例,我仅打算使用此表单集创建多个新实例。但是,表单集 会列出一系列初始表单值,这些大小可能会有所不同。

我希望用我的Modelform的正好N个实例来呈现表单集,其中N等于传递的初始列表的len。我不想在数据库中创建实例并将它们作为查询集传递,因为当只需要4个实例时,我最终可能会制作40个模型实例。

来自表单集上的文档:

如果初始数据中的项目数超过max_num,则将显示所有初始数据表单,而不管max_num的值如何,并且不会显示任何多余的表单。例如,如果extra = 3和max_num = 1且用两个初始项初始化表单集,则会显示两个带有初始数据的表单。

来自Modelformsets上的文档

与常规表单集一样,可以在实例化modelformset_factory()返回的模型表单集类时通过指定初始参数来为表单集中的表单指定初始数据。但是,对于模型表单集,初始值仅适用于其他表单,而未附加到现有模型实例的表单。如果首字母的长度超过额外形式的数量,则多余的初始数据将被忽略。如果用户未更改带有初始数据的多余表格,则不会对其进行验证或保存。

我想知道的是:是否可以通过某种方式定义我的modelformset_factory的extra参数,以使多余部分始终等于传递的初始数据的长度len?

如果我只是一个普通的表单集,看来我可以通过将extra设置为0来实现此目的-但不能使用modelformset。我宁愿使用modelformset来简化数据提交后的处理,但是我认为我的用例对于modelformset可能有点不正常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)