我有一个编辑Django应用程序的合同工作,而Django不是我使用的主要框架,因此我对其中的模型有疑问。
我正在编辑的应用程序有一个每个用户都可以提交的表单,并且应用程序中的每个模型都直接通过表单进行编辑。
从这个角度来看,似乎每个模型都直接是一个表单对象,我没有看到任何可用于自定义变量的模型字段。意思是代替"字符串"我可以用JS编辑,我只看到一个TextField,它可以编辑的唯一方法是直接将它包含在表单上。
如果我想要一些自定义变量的模型,这意味着我完全通过JS控制它们而不是表单提交,我将如何在Django中执行此操作?
我知道我可以,例如,有一些"隐藏"形成我用JS操纵的对象。但这个解决方案听起来有点像黑客。有没有一种方法可以解决这个问题?
谢谢!
(编辑:似乎大多数回复都不知道我指的是什么。基本上我想让客户端执行一些特殊的排序功能等,在这种情况下我需要一些额外的功能数据列表。但我不希望这些数据对用户可见,并且它们将由js专门更改。
关于SColvin的响应,我理解模型是数据库的表示,但是根据我正在处理的应用程序的设计,看起来模型的唯一使用方式是严格通过表单。
例如,每个"字符串"是一个" TextField",并且假设我们创建了一个名为" myField"的字符串,该字段的独占使用是在模板中使用它,语法为{{form.myField | ATTR:"行:4" }}
在表单之外绝对没有使用此模型。您在应用程序中看到的每个位置都有一个表单对象。这就是为什么我认为这是编辑模型中的数据的主要方式。
我在接受这个项目之前做过Django教程,但是不记得有什么方法可以向表单之外的模型提交更改。
更具体地说,在这种情况下我想做什么:让我们说我想在我的模型文件中添加一个字符串,并且不会包含/编辑此字符串表格。它对用户是不可见的。它将通过一些.js函数在浏览器端进行修改,我希望在提交表单的其余部分时保存它。这样做的目的是什么?
如果有人可以请指导我如何做到这一点的文档或示例,将不胜感激! )
( Edit2 :自第一次编辑以来没有回复?不确定这篇文章是否没有出现在其他人身上。还在寻找答案!)
答案 0 :(得分:0)
这里有一些术语混淆,正如斯科尔文指出的那样; “自定义变量”是什么意思,以及它们与模型的关系,这一点真的不明确。
然而,你的主要困惑似乎是形式。绝对没有要求使用它们:它们只是更新模型的一种方法。总是可以直接在代码中编辑模型,如果你愿意,那里的数据当然可以来自Javascript。本教程很好地介绍了如何在不使用表单的情况下从代码更新模型。
如果你正在通过JS做很多工作,你可能想要研究Django Rest Framework,它简化了将Django模型数据转换为JSON以及从JSON转换为在客户端代码中使用的过程。虽然DRF没有做任何事情,但你不能在你自己的代码中手动完成,所有这些都不使用表格。