【问题标题】:Django saving models by JS rather than form submissions?Django通过JS保存模型而不是表单提交?
【发布时间】:2015-12-21 17:07:18
【问题描述】:

我有一份编辑 Django 应用程序的合同工作,而 Django 不是我要使用的主要框架,所以我对其中的模型有疑问。

我正在编辑的应用程序有一个每个用户都可以提交的表单,并且应用程序中的每个模型都是直接通过表单编辑的。

从这个角度来看,似乎每个模型都直接是一个表单对象,我没有看到任何可以用于自定义变量的模型字段。意思不是我可以用 JS 编辑的“字符串”,我只看到一个 TextField,其中唯一可以编辑的方法是将其直接包含在表单中。

如果我想要一些模型是自定义变量,这意味着我完全通过 JS 而不是表单提交来控制它们,我将如何在 Django 中做到这一点?

我知道我可以拥有一些我用 JS 操作的“隐藏”表单对象。但是这个解决方案听起来有点老套。有没有预期的方法可以解决这个问题?

谢谢!

(编辑:似乎大多数回复都不知道我指的是什么。基本上我想让客户端执行一些特殊的排序功能等,在这种情况下我需要一些额外的数据列表。但我不希望这些对用户可见,它们将由 js 专门更改。

关于 SColvin 的回应,我知道模型是数据库的表示,但从我正在处理的应用程序的设计方式来看,似乎模型的唯一使用方式是严格通过表单。

例如,每个“字符串”都是一个“TextField”,假设我们创建了一个名为“myField”的字符串,该字段的唯一用途是在模板中使用它,语法为 {{ form.myField| attr:"rows:4" }}.

在表单之外绝对没有使用此模型。你在应用程序中看到的每一个地方,都有一个表单对象。这就是为什么我的印象是编辑模型中的数据的主要方法。

在接受这个项目之前,我学习了 Django 教程,但不记得有任何方法可以在表单之外提交对模型的更改。

更具体地说,我想在这种情况下做什么:假设我想在我的模型文件中添加一个字符串,并且该字符串不会包含/编辑在表单中。它将对用户不可见。它将由一些 .js 函数在浏览器端进行修改,我希望在提交表单的其余部分时将其保存。这样做的预期方法是什么?

如果有人可以指导我获取有关如何执行此操作的文档或示例,我们将不胜感激! )

Edit2:自第一次编辑后没有回复?不确定这篇文章是否没有显示给其他人。仍在寻找答案!)

【问题讨论】:

  • 也许您可以澄清一下javascript中“自定义变量”的含义?我还认为您对“模型”(例如数据库表)和字段(例如数据库表中的单个列)感到困惑。
  • 在这里查看答案,可能对您有所帮助:stackoverflow.com/a/34371264/5658350
  • 我添加了更多信息,希望能更好地描述我的问题!

标签: javascript python django forms


【解决方案1】:

正如 SColvin 指出的那样,这里存在一些术语混淆;真的不清楚您所说的“自定义变量”是什么意思,以及它们与模型的关系。

但是,您的主要困惑似乎在于表格。绝对不需要使用它们:它们只是更新模型的一种方法。始终可以直接在代码中编辑模型,如果您愿意,其中的数据当然可以来自 Javascript。本教程很好地介绍了如何在不使用表单的情况下从代码更新模型。

如果您通过 JS 做大量工作,您可能希望研究 Django Rest 框架,它简化了将 Django 模型数据与 JSON 转换以在客户端代码中使用的过程。同样,尽管 DRF 没有做任何您在自己的代码中无法手动完成的事情,但完全无需使用表单。

【讨论】:

  • 感谢您的回复。我添加了更多信息,希望能更好地描述我的问题!您在教程中提到了如何在没有表格的情况下对其进行更新?我不记得在官方教程中(如果这是你的意思)。如果您能指导我,我将不胜感激!谢谢!
猜你喜欢
  • 2021-02-15
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
相关资源
最近更新 更多