【问题标题】:Update database field with multiple buttons使用多个按钮更新数据库字段
【发布时间】:2018-10-15 05:29:27
【问题描述】:

我正在使用 Django 进行一个小项目,并且我有一个数字产品的详细信息页面。用户应该可以通过 3 个按钮更新此产品的状态。此状态表示数据库中的一个 ChoiceField。选项包括:驳回、审核中和批准。 点击按钮应该直接提交表单。

我的问题是,解决这个问题的最佳方法是什么(没有 Ajax)?

我的第一个想法是添加 3 个表单,每个表单都有另一个操作 url。

我对 Django 还很陌生,不知道我的方法是否是最好的解决方案。

【问题讨论】:

  • 如何让links 看起来像buttons 并将查询中的一些信息传递给view,并让视图对它获得的参数做出不同的反应?如果你想我可以做一些代码。

标签: python django


【解决方案1】:

this questionthe docs 中所述,您应该能够使用RadioSelect 表单小部件获得所需的内容。

如果您添加一些 CSS 来隐藏单选输入本身,并将标签样式设置为按钮,那么您应该会很好!

编辑以在下面包含我的评论: 要获得单击提交,您可以编写一些简单的 javascript 来捕获按钮上的 onclick 事件,并在您单击时提交表单。

【讨论】:

  • 这需要一个额外的提交按钮。用户应该只单击一次而不必进行选择。
  • 我明白了。如果没有 AJAX,除了您在问题中提到的 3 种形式之外,我想不出其他方法。除非您对某些 javascript 没问题,在这种情况下,您可能会捕获按钮上的 onClick,并从代码提交表单。不过感觉有点hacky。
  • 我认为这是个好主意。我可以使用单选按钮并在选择一个时使用 jQuery 提交它。我会试试这个。非常感谢。
  • 我可以再征求您的意见吗?我刚刚找到了另一种没有 JS 的方法。我可以添加多个具有不同值的提交按钮<button type="submit" name="status" value="approve">Approve</button> ...您对此有何看法?
  • 如果它有效,我会选择最新的想法,如果你不使用 javascript,你可以避免与某些浏览器的潜在兼容性问题,并且也使它适用于关闭的用户javascript。最后,它可能取决于您的特定应用程序/用户,但这似乎是个好主意。再加上你所有的代码都在同一个地方(即:python 表单,而不是模板和表单之间的拆分),所以更好的可维护性。
猜你喜欢
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 2011-09-27
  • 2013-02-18
  • 2014-07-14
  • 2019-05-31
相关资源
最近更新 更多