问题标签 [inline-formset]

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 投票
3 回答
6472 浏览

python - 如何将自定义字段添加到 InlineFormsets?

我正在尝试使用以下代码将自定义字段添加到 InlineFormset,但这些字段不会显示在 Django Admin 中。InlineFormset 是否过于锁定而不允许这样做?我的 print "ding" 测试按预期触发,我可以打印出 form.fields 并在那里查看它们,但实际字段永远不会在管理员中呈现。

管理员.py

0 投票
3 回答
10669 浏览

django - Django中的内联表单集 - 删除某些字段

我需要创建一个内联表单集

MyModela)完全不显示某些字段

b) 显示一些字段MyModel,但阻止它们可编辑。

我尝试使用下面的代码,values()以便将查询集过滤为我想要返回的那些值。然而,这失败了。

有任何想法的人吗?

0 投票
2 回答
1550 浏览

ajax - inlineformset_factory 自定义表单ID

我正在编写一个使用 ajax 在页面上添加新表单的 Web 应用程序。现有的表单是使用 inlineformset_factory 制作的。当客户端获取表单时,它会将其插入到正确的位置并更新#id_form_type-TOTAL_FORMS"的值(在本例中,form_type 是表单的名称)。

现有表单具有每个字段的名称,例如 name="form_type-1-source",其中 1 是唯一的表单 ID。

问题是为新表单生成下一个 ID,以便所有表单都不同。我已经提出了一种解决方案,但我不喜欢它。

ajax 调用的 URL 如下所示:

获取表单视图:

以及调用它的 JavaScript 函数:

我有不止一种形式,所以函数是通用的。我将 form_type 保留在锚的 href 属性中。

所以,我在这里所做的是创建比我需要的更多的表单,我只使用最后一个。

那么,有没有办法告诉 inlineformset_factory 我想首先生成什么 ID?

PS:对不起我的英语不好...

0 投票
2 回答
1353 浏览

django - 动态填充表单集中的字段

我有两个看起来像这样的模型:

...然后是一个看起来像这样的模型:

如您所见,序列小部件是隐藏的,因为我希望该字段由 django 自动处理。我希望用户只需通过文本框输入 Base 即可。序列由文本框的顺序推断。

我已经使用此表单创建了一个表单集,用于创建/编辑路线中的所有基础:

创建此表单集时,序列字段为空。在保存表单集之前,我需要用值填充它(否则它不会验证)。我可以想到大约 4 种方法来解决这个问题

  1. 在我将表单集发送到模板之前,我运行以下代码:

这工作正常,除了一个问题。当表单集被提交回视图进行保存时,使用该表单集创建的所有5 个额外字段都将填充一个序列值。当用户只想向路线添加 2 或 3 个碱基时,这会导致问题。验证错误弹出,因为该表单的必填字段“base”为空。我可以在表单集发布后运行一些代码来检查是否存在碱基,如果不存在,则删除序列,但如果我要这样做,我也可以......

  1. POST 表单集时运行一些代码,检查是否输入了 Base,如果是,则添加一个序列,如果没有,则将该字段留空。这样,当您尝试使用表单集时.save(),空值可确保不会将特定表单放入数据库中。唯一的问题是在我运行之前我不能对表单做任何事情,因为表单.save(commit=False)集没有验证。但我可以...

  2. 通过复制request.POST变量并手动设置序列来添加序列值,但这看起来非常糟糕。

  3. 我也可以blank=True从我的一个RouteBase领域中删除,但我真的不想这样做。

那么我应该在这里做什么?

0 投票
3 回答
37520 浏览

django - 使用内联表单集创建模型和相关模型

[我在Django users 上发布了这个 | 谷歌组也是。]

使用inline formset docs中的示例,我可以编辑属于特定模型的对象(使用 modelforms)。我一直在尝试遵循相同的模式来 使用内联表单集创建新对象,但一直无法清醒到足以为此目的带来工作视图。

使用与上述链接相同的示例,我将如何创建“作者”模型的新实例及其相关的“书”对象?

0 投票
2 回答
4845 浏览

python - 没有实例的 Django Formset

这个Django 文档中,解释了如何创建一个表单集,允许您编辑属于特定作者的书籍。

我想要做的是:创建一个表单集,允许您添加属于新作者的新书......在同一个表单集中添加书籍及其作者。

你能给个灯吗?谢谢。

0 投票
1 回答
1927 浏览

django - 从同一页面发布的多个 django 表单、内联和添加/删除这些内联

关于stackoverflow中或多或少相同的问题有几个问题,但似乎没有一个涵盖我可以预见的问题。由于我的 django 知识有限,我可能反应过度......所以......

我想用 django 完成的是在同一视图中编辑 2 个模型 List 和 ListItem。列表作为普通表单,列表项作为内联表单集。创建这两种形式不是问题。将它们传递到视图 > 模板中也不是问题。

我担心的是,

1)如何将它们发布到相同的地址并处理该发布请求。

2) 如何使用 javascript 设置从该表单集中添加/删除那些内联 ListItems。

2.1)如果我向某个地址发送 ajax 请求以删除 ListItem 对象,然后使用 javascript 删除表单的该部分。django 视图部分如何知道要从数据库中删除哪个对象?我是否需要将对象的 ID 传递给模板,以便我可以使用 ajax 将其发送回查看?

2.2)如果在我删除/添加行之后发布了整个更改的 ListItem 内联表单集,那么它不会引起问题,因为最初使用的对象字典在两者之间发生了更改?

3)有人可以看到任何其他陷阱吗?

顺便说一句,我不想​​通过代码示例。如果可以的话,请解释一下事情是如何运作的以及我应该做什么并牢记在心。如果您知道最新的示例,那么我也可以使用一些链接。

编辑(并回答我自己的问题):我试过了,这就是我发现的:1)只是把它们摆出来......因为你可以这样做:

然后做任何需要的事情——非常简单和容易。

2)复制现有的行/表格或删除一个。您需要记住的是元素名称是正确的,并且 formset 使用 {{ form.management_form }} 加载的内容包含最新且正确的信息以及有多少表单。所有字段名称也需要是最新的。如果您从表格 1 和表格 3 之间删除表格,则表格 3 的编号需要更改为 2,依此类推。

2.1)可以从{{ form.initial.id }}中提取元素id,然后在form中使用

2.2) 如果 form.management_form 信息正确且字段名称是最新的,则否(请参阅 2.)

3)只需要建立视图,所以你的网站不会被跨站请求伪造破坏(见http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

艾伦。

0 投票
2 回答
11610 浏览

django - Django:从表单集中获取表单ID

我不确定标题是否准确地描述了我想要的东西。我想要的是实现这样的目标:Django add / remove form without multiple submit

但我没有我有表单集和表单的项目列表。这个表单集的表单确实包含我可以用来创建链接的信息,例如 {% url 'item_edit' item.id %}。问题是它是隐藏字段的值。在这里(http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-the-form-s-fields)你有一个选项列表如何在模板中使用表单的字段,但它们都不是{{ field.value }}。如果我尝试过,那么它只是默默地失败了。

反正。到代码。我在模板中拥有的是:

这给了我这样的内联表单行:

我正在寻找一些方法来添加这样的链接

要不就

此视图的 Urlconf 为:

那么有没有一些简单的方法可以从表单中获取项目(对象)的 id?我是否必须为该删除链接创建某种小部件?

艾伦。

0 投票
1 回答
147 浏览

django - 如何使用内联表单集链接两个或多个表单?

我有以下模型,我想用它们来生成一个联系表单......现在我知道我应该使用内联表单集,但我从来没有能够对如何制作这个做出正面或反面工作...我想知道名字、姓氏、电子邮件、电话号码、最佳联系时间以及我认为的消息。

0 投票
3 回答
7933 浏览

django - Django inlineformsetfactory - 它有什么用?

对不起,一个新手问题,但......

有人可以阐明 inlineformset_factory 的用例是什么吗?

我遵循了 Django 文档中的示例:

但它只显示书籍字段。

我的理解是 formset 会像 Django Admin 一样显示带有内联 Author 表单的 Book 表单。最重要的是,我不能轻易地将初始值传递给表单集?

那么使用两个单独的 AuthorForm 和 BookForm 有什么好处呢?

还是我错过了一些明显的东西?