问题标签 [formsets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1099 浏览

django - 如何测试内联表单集

有一个内联表单集可以很好地工作。它仅在测试中失败。

有一个模型可以连接两种类型的参与者:发送者和接收者。

models.py

向发送者显示内联表单集,发送者选择发送给接收者的数量:

forms.py

views.py (CBV)

因此,当我尝试对其进行测试时,该行formset.save()会出错:

因为未设置接收者 ID。虽然,如果我查看返回的 formset.forms 的内容,一切都在那里。同样,在现实生活中,一切都很好,并且得到了适当的保存。所以只有测试会导致错误。我做错了什么?

更新:

我不知道这是否重要,但如果我比较 self.request.POST 在正常流程(未经测试)和测试(最终出现错误的情况下)的输出:

通过测试:

没有测试:

所以除了 csrf 令牌的明显差异之外,一切看起来都一样。

0 投票
0 回答
105 浏览

django - Django表单集...绑定,请求,...编码模式?

我目前正在浏览基本的 django 文档,因为我正在尝试为我的一个旧项目提出一些基本的编辑视图类。为此,我必须使用表单集。我对本示例中用于生成编辑视图的调用模式感到困惑。

您必须实例化表单集以使用 request.POST 进行验证的确切原因是什么,并且对于错误,您必须使用初始实例重新创建整个事物......(否则它不会显示任何数据)

0 投票
0 回答
89 浏览

django - Django 通用模型表单集

所以我有一个网站,用户可以在其中注册设备,然后向这些设备注册命令。这些命令具有关联的小部件(按钮、滑块等),用于确定命令具有的独特属性。

我试图找出在我的应用程序中使用模型表单集的最通用方法。我有一些工作,我为每个 ModelForm 创建一个 model_formset,并从每个模型中获取数据以放置在 formset 中,然后在我的模板中显示它。

我真正想做的是这样的:

我在哪里获取所有命令(返回按钮和滑块),然后创建一个包含所有命令对象的 command_formset。

在这种情况下,它完成了我正在寻找的部分内容,我可以在其中查询我的模型并获取所有按钮和滑块命令,但表单集仅包含命令中的字段 - 因此滑块的最小值和最大值会丢失。

这样的事情可能吗?这是我更完整的代码:

楷模

形式

看法

编辑其他查看代码

另一个相关问题

希望我不是压倒性的,但上面是一个非常相似的问题,看起来要简单得多。用户发布一个表单,两者都继承自 Command。虽然上面的内容很简单,但如果我最终拥有 20 多种不同类型的 CommandForm,这将变得相当糟糕。

我真的希望我错过了 Django 可以告诉应该使用哪个子表单来构建表单的某种方式。

0 投票
1 回答
139 浏览

django - Django formset - 根据用户cookie验证输入?

我有一个包含单个字段数量的 Django 表单(TestForm)。我还有一个 Django formset (TestFormset),其中包含我的 TestForm 的多个实例。

我想为我的 TestFormset 编写一个自定义 clean() 方法,该方法验证在我的多个 TestForms 中指定的数量之和是否等于存储在会话变量中的数字 max_quantity。

我知道我能够在 views.py 中执行此验证(例如,在我的表单集经过验证和清理后,我可以手动总结我的 TestForms 中的“数量”变量并检查以确保它们等于请求。 session['max_quantity'],如果发现任何问题则抛出错误)。

但理想情况下,我希望将所有表单验证逻辑移到 forms.py 的 clean() 方法中。但是,我不知道如何将外部值传递到我的 Formset 中,该值未链接到其单个表单之一。

这可能吗?

表格.py

视图.py

0 投票
1 回答
276 浏览

javascript - 页面刷新后js中的表单数量不重置,django和django-dynamic-formsets

我有一个 django 表单集,其中使用jquery.formset.js动态添加和删除表单。它跟踪当前在表单集中的表单数量。但是当我刷新页面时,formset 中的表单数量不会为 1,并且由于minformsetmax中可以添加的表单数量,它不允许添加更多表单。

初始形式: 图片1

有两种形式:

图片2

刷新后:

图3

我应该没有选择,remove the form但我可以看到它,因为表单的数量仍然存储为 2。我只能再添加 1 个表单,因为可以添加的最大表单数是 3。

请帮我处理这个问题。

0 投票
0 回答
97 浏览

python - 我想更新我的表单集工厂图像帖子,我可以更新帖子文本字段但表单集工厂图像没有更新

我已经搜索过这个问题,但无法得到正确的答案,因为之前有很多与此相关的问题被问到。

我正在使用具有多个字段的帖子模型和用于多个图像字段的其他模型(具有帖子模型的外键)。我想更新我创建的帖子。

这是我对 update_post 的views.py

这是我的 update_post.html

0 投票
0 回答
50 浏览

html - Django & Jquery:使用按钮 jquery 添加表单后无法正常工作

假设我有以下表单集。

表单是使用添加的dynamic-formset.js,我在下面的代码中调用它以在单击我的按钮时创建一个新表单:

我需要在我添加到表单集中的每一行上应用 jquery 函数。这就是为什么我创建了函数test中调用的onclick函数:

我需要的是使我的行彼此独立,因此如果我更改第一行中的 field1,则只有同一行中的第二个字段会更改,而不会影响其他行。

但是我有两个问题:

第一个:当我首先加载页面时,我显示了第一行,但我无法在其上应用该test()功能,因为test()仅在单击“添加”按钮时才会执行。所以我不知道如何使它第一次工作。除此之外,test()如果添加了第二行,则仅适用于第一行。同样的事情:test()如果添加了第三行,则仅适用于第二行。

第二个:当我点击ajoutligne按钮超过 1 次时,应该赋予同一行字段中的其他两个字段的x和变量,它们显示在具有 jax 的最后一个值的行的字段上。y$("#id_form-"+jax+"-tiers").html(x);$("#id_form-"+jax+"-numfacture").html(y);

例如:如果我点击了ajoutligne 3 次,那么jax=3,如果我们在 中row 0,这就是改变时应该发生的情况choicefield1

$("#id_form-"+0+"-tiers").html(x);$("#id_form-"+0+"-numfacture").html(y);

然而,这反而发生了:

我不知道如何解决它。我希望我解释清楚。

感谢您的帮助。

0 投票
1 回答
311 浏览

javascript - Django & js:我的表单集表单相互依赖

每当我单击按钮“”时,我都有以下 js 将表单添加到我的模板

我在标题中调用此脚本:

这是我的模板:

该按钮Ajouter une ligne是在 js 上调用以添加我的表单集的新行的按钮。我的问题是我的表格不是独立的。例如最后一个字段typeMontant是一个单选按钮,当我添加一个新行时:

在此处输入图像描述

四个单选按钮中只有一个单选被选中。这意味着这两行是相互依赖的。那么当我需要它们完全独立时,使我的表单相互依赖的问题是什么。

请提供任何帮助。我真的卡在这里,非常感谢。

0 投票
1 回答
360 浏览

django - django模板中动态添加的formset表单的ID

这可能是一个愚蠢的问题,但是:

在 django 模板的表单集中呈现表单时,还必须呈现 ID。这我明白了。

当我用 JS 在表单集中动态创建一个新表单时,我必须再次创建一个隐藏的 ID 字段。但是我给这个 ID 赋予什么价值呢?模板不知道可用的 ID。如果没有正确的 ID,表单集将不会在服务器上传递回验证。

有任何想法吗?

0 投票
2 回答
519 浏览

django - django formset 作为列

我使用下面的 html 作为 django 表单集。javascript 工作正常,但我想以列格式显示表单。尝试了各种片段,但无法在它们上使用 javascript

下面是HTML代码



上面的 html 将以行格式显示表单
+Field-1 ---------
+Field-2 -- 依此类推

如何以列格式显示相同的字段

字段 1 字段 2
--- ---
保存/添加表单

同样的JavaScript是