问题标签 [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 投票
1 回答
949 浏览

django - Django inlineformset - 自定义保存方法

这是我的models.py

我不知道如何在InvoiceItems重新定义的保存函数中保存计算的数据...这显然不起作用,因为Invoices先保存...

视图.py

如何遍历InvoiceItems并计算需要插入的字段Invoices。我是django的新手...

谢谢!

0 投票
1 回答
975 浏览

django - Django - 内联表单和外键

我有一个允许用户为项目创建估算的应用程序。估计包含基本的客户信息(姓名、地址、电话号码等)和我生成的自定义主键值。现在,我还有另外两个模型来列出工作所需的估计产品和劳动力。这两个模型通过外键链接到“主”估计模型。对于这两个模型,我将使用内联表单集,因为默认情况下,它们通过外键链接到另一条记录。

我想知道是否可以与两个内联表单同时创建主要估算(基本数据)记录?似乎它不起作用(好吧,我无法使它起作用),因为两个内联表单集链接到的外键还不存在,因为它也刚刚被创建。

将其设为两步过程会更好吗: 步骤 1)创建并保存基本数据(从而创建可以链接到的主键) 步骤 2)添加产品和人工记录,通过主记录的外键链接它们. 看起来这将是一个糟糕的 UI 设计(有两个步骤)。

想法?

谢谢!

0 投票
1 回答
1029 浏览

django - Django 的内联表单

我正在尝试使用内联 formSet 创建记录,同时使用普通表单创建记录,其主键内联 formSet 的外键,所有这些都在同一个 HTML 页面上。

说得通?这就是我的意思:假设我有以下两个模型(显然不是真正的代码,但你明白了):

现在,我想为用户创建一个 HTML 页面,这样他们就可以在创建多个mainModel实例的同时创建一个inlineFormModel实例。这mainModel将是一个正常的形式,而inlineFormModel将使用 inlineFormsets。问题是,当我保存所有表单时,没有 foreignKey 链接到内联 formSet 记录,因为它引用的模型仍在创建中(所有内容都保存在同一个视图中)。那有意义吗?

我将如何mainModel使用多个secondModel实例创建一个新实例并使用相同的视图函数保存整个批次?

谢谢!

0 投票
1 回答
2073 浏览

django - django:如何在表单向导中使用 inlineformset?

我正在展示两个单独的示例项目。第一个是与联系人相关的,并显示了使用表单向导的原理。第二个是食谱相关项目的成分,它展示了如何在表单中使用内联。我希望内联在我的表单向导中,就像它们以正常形式工作一样。

我有一个表单向导多步表单工作。它基于此处的示例。我已经稍微改变了它以使用模型形式。

模型.py

表格.py

网址.py


另外,我将内联生成为另一种形式。在我看来,我正在通过inlineformset_factory执行此操作。这与上面的表单向导示例无关。这是食谱示例的成分。我这样做是这样的:

视图.py

recipes_add.html


如何让内联在我的表单向导多步表单中工作?models.py 现在看起来像这样,因为我希望书籍是内联的。我希望内联出现在我的表单向导的第一步。然后进入第 2 步并完成。

0 投票
1 回答
2304 浏览

django - 带有内联表单集的 Django 表单验证

我在一个 HTML 页面上有一个主表单和三个内联 forset,目的是为客户创建 Estimates。“主”表单的主键用作所有三个内联表单集的外键。我可以创建新的估计,保存它们,更改数据等。没问题。但是,它只有在所有必需的数据都存在并且“有效”的情况下才有效。

如何让 HTML 页面重新显示所有输入的数据,但在正确的位置显示错误?

为了进一步解释我的情况,单个简单表单的正常方法是这样的(这是我的想法,所以希望我没有代码错误):

现在,根据上述情况,如果存在验证错误,则会在表单中重新显示用户已经提交的数据,并在相应字段旁边显示一些错误。

使用内联表单集,我们执行以下操作(假设myForm有 PK 并myInline通过外键使用该 PK):

因此,使用上面的代码,如果我在 中出现验证错误myForm,我们会退出if语句并重新显示表单以显示错误。但是,尚未创建内联表单(myInline = inlineFormset(request.POST, instance=tmp)行),因为该步骤发生检查myForm有效性之后,我们得到错误myInline Referenced before assignment或其他什么。

为了解决这个问题,我尝试移动线条:

在检查是否myForm有效之前,以便我可以捕获内联表单的 POST 数据。但我不能这样做,因为我没有检查是否myForm有效。

鸡和鸡蛋。啊!

那么,在重新显示用户为内联表单集输入的内容时,如何进行验证并显示表单的输入错误?

对不起,很长的帖子,但我不知道如何缩短问题。


编辑:

好的,我想出了如何显示myForm主表单的验证错误并重新显示所有myForm字段以及表单集myInline字段。它是这样的:

myInline在退出主要语句之前,我只是偷偷地执行了一项新任务if

希望这可以帮助其他人解决同样的问题。

干杯!

0 投票
1 回答
2061 浏览

django - 如何模仿 django admin 的 OneToOneField 可选表单

当模型具有 OneToOneField 到另一个模型时,我想模仿 Django 管理站点提供的功能,在该模型中,可以选择填写 OneToOne 模型的表单。该字段的表单始终显示,但如果它为空,则不会创建 OneToOneField 的对象,只会创建或修改主对象。它还有一个删除复选框,仅在创建 OneToOneField 对象时激活。如果选中它并点击保存,OneToOne 对象将被删除,但主对象被保留。

涉及的模型:一个是产品,另一个是产品的额外信息,如果它恰好是啤酒:

这就是我试图对视图做的事情:

这些是我参与的表格:

这就是我设法在模板中显示两种形式的方法:

但是,问题仍然是,如果我不填写 OneToOne 表格 (Cerveza),我将无法添加产品。所以,不能为空。此外,如果我尝试删除 OneToOne 表单,我会收到以下消息:

不幸的是,我还没有找到一个很好的例子来说明如何为可选的 OneToOneField 创建表单并在自定义模板中使用它。

我给你留下两个例子来说明它在 django admin 中是如何工作的:

在添加可选的 onetoone 对象之前:http: //i.imgur.com/p3P6s.png

创建可选的 onetoone 对象后:http: //i.imgur.com/UEcm8.png

我将非常感谢任何帮助。提前致谢。

0 投票
1 回答
1716 浏览

jquery - 向我的表单集添加新的内联时,我的日期选择器停止工作

今天有点奇怪。

我有一个非常基本的项目。一个表单并添加到我有一个内联表单。这是给作者的书。

当表单加载(/authors/create/)时,我有一个作者姓名,在下面我有一个表单,我可以在其中向该作者添加书籍。

为了能够拥有动态内联(能够在表单上添加或删除),我正在使用http://code.google.com/p/django-dynamic-formset/

我现在的问题是,当我添加新的内联时,内联表单的所有日期选择器(用于发布日期的字段)都停止工作。

我附上了我的示例项目,确切地显示了问题所在。您可以在此处下载并运行它。

为什么以及如何解决这个问题?

0 投票
1 回答
786 浏览

django - 在 Django 管理内联中使用的 form_class 中获取外键实例

我有一个使用自定义表单类的管理员内联。如何从该表单类的函数中访问父实例(外键)?

相关代码如下:

模型.py:

管理员.py:

表格.py:

我知道一旦有一个实际实例,我就可以使用instance.bar. 但是,这只有在确实有记录时才有效,对吗?因此,如果我使用此表单创建记录,则实例将为无。

0 投票
2 回答
1470 浏览

django - Django内联表单集 - 获取保存的对象

你好,我怎样才能保存内联表单集对象?事实上,我的表单集没有唯一字段。

0 投票
1 回答
163 浏览

python - Django内联表单集和一般noobishness

很抱歉在一天之内问了两个关于类似主题的问题,但我对 django 的无知已经完全接管了。基本上我有两个模型:

你可以这样想,有人提交了一个故事,他们的名字进入了作者的表格。很简单的东西。我的问题是创建一个允许用户提交他们的故事和姓名的表单。我尝试了一个 inlineformset 并且没有运气我只是找不到一种方法来执行我所知道的只是一个简单的 AND sql 语句在幕后。

这是我的表单模型: StoryAuthorFormSet = inlineformset_factory(Author, Story)

这是我的看法

我意识到他们可能是我错过的一个简单的解决方案......但我很难过任何想法都会非常感激......所以我将为任何需要的人做一些免费的 Clojure 和 Erlang 编程它!