问题标签 [django-formwizard]

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 投票
2 回答
747 浏览

django - django 表单中的初始值

大家好,这里是我的代码

这是在 Urls.py

这是我的看法

这可以正常工作,没有问题,但是我想在调用 url 时为表单字段设置初始值,有没有办法解决这个问题?

0 投票
2 回答
625 浏览

django - 带有自定义查询集的表单向导

我对表单向导有疑问。在向导的第 3 步中,我使用了一个过滤查询,该查询取决于第 1 步和第 2 步中的选择。我的向导在前进时工作正常,但是当用户按下上一个或更改第 1 步和第 2 步的选择时,事情就出错了(验证错误或过滤器不起作用)。

这是我的forms.py:

如果我在 forms.py 中使用 queryset Activiteit.objects.none() ,向导的第 3 步中的正确字段会正确显示,但第 3 步总是给出验证错误。

如果我在 forms.py 中使用 queryset Activiteit.object.all() ,则正确(过滤的)字段在前进时会在步骤 3 中显示,并且表单会验证。但是,当用户在第 4 步中按上一步时,过滤器消失了,所有选项都可用。

Edit2:好的,我发现每次都会读取 get_form (删除了我之前对此的编辑)。我的代码的问题是,当用户从第 4 步返回第 3 步时,get_form 使用的步骤是第 4 步。我试图改变:

“如果步骤 == 'step3'”

进入:

“如果步骤 == 'step3' 或步骤 == 'step4':”

在我看来,但这会导致 Activiteit 出现关键错误

我认为这些字段已更新到第 3 步,但表单没有。我在下面包含了我的views.py。

0 投票
1 回答
577 浏览

django - 在运行时为表单向导设置选项和表单?

我正在尝试使用表单向导,但我不知道在哪里设置字段的选项。

我看到一个空表单,看起来像是添加对象的管理面板。我希望能够将问题传递给表单并填写问题字段且不可编辑且最好不要提交。

如果我做

函数 get_form_list 没有长度

Quiz_id 未知。

所以现在我正在尝试将 quiz_id 传递给视图函数并生成要在表单向导中使用的问题表单列表

网址.py

视图.py

我收到错误消息

根据 Rohan 的回答更新:

使用此代码,我收到错误

这是我的models.py

0 投票
1 回答
940 浏览

django - 如何使用 django 表单向导使步骤可选

Django 表单向导有一个condition_dict允许在满足条件时跳过某些步骤。如果我们不想跳过一个步骤,而是让它成为可选的,该怎么办。换句话说,该步骤的表单仍将被呈现,但它同时具有提交按钮和跳过此步骤按钮。提交按钮将执行正常的表单验证,而跳过按钮将用户带到下一步。

django 1.4/1.5 中的表单向导甚至可以做到这一点吗?如果是这样,请给我一些指示。谢谢。

0 投票
1 回答
2238 浏览

django - Django accessing url parameters in Form wizard in get_context_data() method

I have the following code

---- urls.py ----

---- views.py ----

The problem is I'm getting key error trying to access kwargs['city_slug'] in the get_context_data() method.

although I can access kwargs['city_slug'] in the done() method with no problems.

Any ideas?

0 投票
2 回答
4256 浏览

python - How to provide initial data to django form wizard?

According to the form wizard docs, the initial data should be a static dict. But is it possible to provide initial data dynamically?

Here is my situation:

The email is what I want for initial data in step0, but I can only get this email in get_context_data method. How can I do that?

By the way: if the urlconf for formwizard.as_view accept argument like:

does it mean I have to pass a variable to my form's action attributes, because otherwise when I submit the form, I will get a not found url error.

0 投票
1 回答
2849 浏览

django - Django Drama: (Drag-n-Drop File Uploader in Multi-part Form) + (Bind File to Form / Model & Save to Postgres)

这里隐藏了一些相关的小问题,但它们确实指向一个大而多毛的最佳实践问题。这是一个很难实现的功能,因为它应该一次做一些棘手的事情......

  • 拖放式多文件上传器(通过 Javascript)
  • 多页表单(第一页:上传文件并将文件与现有文档模型关联;第二页:更新和保存文件/文档对象和元数据到数据库)

...而且我还没有在任何地方找到预先存在的代码示例或实现。(根据一个人的方法,它可以扫除桌面或自动回答所有相关/嵌入式/后续问题。)底线,这篇文章的目的是回答这个问题:什么是最优雅的方法,可以最大限度地减少介入问题/问题?

我在 Django 中使用这个拖放式 JQuery 文件上传器的实现来上传文件......

https://github.com/miki725/Django-jQuery-File-Uploader-Integration-demo

当然,我上面链接的解决方案将文件保存在文件系统上,但是在每个上传会话中分批保存,通过为每批文件创建一个目录,然后为每个目录分配一个 UUID。文件系统上每个唯一命名的目录都包含在该特定上传会话期间上传的文件。这意味着任何类型的数据库存储方法都必须首先梳理并迭代此解决方案为每个上传会话创建的文件系统目录中的所有文件。

注意:上面链接的 JQuery 解决方案不使用 app 目录中的表单(在 forms.py 中)。表单被硬编码到模板中,这已经有点令人沮丧了......因为现在我还必须找到一种很好的方法来将每批中的每个上述文件绑定到一个表单。

认为最简单的——尽管可能是性能最差的解决方案——是为两个表单创建两个视图……将每个文件保存到第一页视图中的数据库中,然后在第二页上更新数据库。这是我目前正在滚动的方向:

在模板中...

在 VIEWS.PY...

# POST(在上传处理程序中;由上传操作触发的请求)

# GET(在同一个上传处理程序中)

第一个页面的这个视图利用了 JQuery 上传器,它非常适合每个会话的多文件上传,并且可以完成它应该做的事情。然而,正如上面所暗示的,作为上传处理程序的视图只是需要成为两页表单的第一页。在第二页,最终用户随后需要检索每个上传的文件,将附加数据附加到他们刚刚在第一页上传的文件,然后重新保存到数据库中。

我试图通过各种解决方案将这项工作作为两部分表单工作,包括表单向导和/或基于通用类的视图......以下示例主要通过会话实现数据持久性。这些解决方案很快就会变得相当棘手。

总之,我需要...

  • 以唯一标识的批次上传多个文件(通过拖放)
  • 梳理并迭代每批上传的文件
  • 将批处理中的每个文件绑定到一个表单并将其与现有文档模型相关联
  • 一次提交/保存所有这些文件到数据库
  • 在潜在新表单的下一页/模板上检索这些文件中的每一个
  • 更新每个文件的元数据
  • 一次重新提交/保存所有这些文件到数据库

所以......您可以通过涉及以下相关问题来了解上述所有内容如何增加简单文件上传的复杂性,并增加提供该功能的复杂性:

forms.py:如何最好地将每个文件绑定到一个表单

models.py:如何将每个文件与预先存在的文档模型相关联

views.py如何按照 Postgres 中预先存在的文档模型在第一页保存每个文件;更新并保存第二页中的每个文档

...而且,我想在没有表单向导和基于类的视图的情况下完成所有这些工作。(尤其是对于这个用例,CBV 让我有点难以理解。)换句话说:我正在寻找可能导致最防弹且易于阅读/理解的解决方案的建议。如果它导致对数据库的多次点击,那对我来说很好。(如果将文件保存到数据库似乎是反最佳做法,请参阅另一篇文章:Storing file content in DB

我是否可以为两个表单创建一个单独的视图,并将标准上传表单子类化,就像这样......

在forms.py...

...然后重构上面的早期上传处理程序,例如...

在views.py 中,将以下内容替换为当前的上传处理程序...

...?

0 投票
1 回答
835 浏览

django - get_or_create 与 ManyToManyField

我有一个模型

在一个表单中,我需要检查是否存在与这些用户的对话。我试过了

但我得到了错误'users' is an invalid keyword argument for this function。我可以做些什么来解决我的问题?

0 投票
1 回答
313 浏览

django - 基于上一步的验证

假设我在一个步骤中有一个输入,在下一步有另一个输入(我正在使用 SessionWizardView)。我需要验证下一步输入是否与上一步的输入相同。如果输入与来自 previos 步骤的输入不同,那么在旅途中更新验证器以显示正确的错误会很棒,因为我使用的是在提交之前执行 django 表单验证器的 ajax 验证。

我想过在第二步输入验证器中与 ThreadLocal.get_current_request() 进行会话并以某种方式进行比较。但我认为这不是一个好的解决方案:) 有什么建议吗?

0 投票
1 回答
277 浏览

django - 不要在 Django 向导结束时重新提交表单

我已经实现了向导,SessionWizardView并且我正在对每个步骤(例如内部表单initclean方法或内部process_step)进行一些后端验证和其他方法调用。所以实际上我不需要在向导结束时提交所有表单并保存所有步骤的数据。我只需要在最后一步之后被重定向到主页。最好的方法是什么?覆盖类似的东西render_done()?有什么建议么?