与djang在同一页面上的多个表单

2024-09-19 23:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很简单的模型。。。类似的东西:

class MachineTransTable(models.Model):
    ...
    file = models.ForeignKey('File', related_name='the_file')
    source = models.TextField()
    target = models.TextField()
    ...

我想做的是有一个页面,用户的左边有源(禁用),右边的目标(可编辑)和一个提交按钮,以在MachineTransTable表中发布每个选定对象的编辑目标文本。以下是一些更多信息,以更好地理解我的请求:

  • 页面指的是一个文件,MachineTransTable表中有多个(有时数百)个对象属于同一个文件
  • 每次用户编辑单个目标并点击该对象的提交按钮时,对象都会保存/更新(取决于对象的初始值),用户可以继续编辑所有其他对象。。。
  • 在页面的末尾有另一个提交按钮,用于在工作结束时退出页面(所有对象都已编辑/更新)。如果对象未编辑/更新,则该对象将保留其原始值。

我试着用一个公式集,但我想这不是正确的选择。。。这是文件表单.py

^{pr2}$

还有视图.py文件为:

^{pr3}$

使用这种方法,我有一个表单,当点击submit按钮时,所有相关对象都会立即保存/更新。。。

我能做什么来实现我上面所描述的?谢谢


Tags: 文件对象用户py模型编辑表单目标
1条回答
网友
1楼 · 发布于 2024-09-19 23:30:28

我认为您的选择是正确的,如果同一个模型中的字段不应使用多个(最终为数百个)表单。有两个原因:

  • 要写这么多表格,你得做很多重复工作,这很容易出错,也很难维护。

  • 不管编辑了多少字段,您仍然需要连接数据库并更新记录,而且它们几乎是高效的。

但如果您真的想这样做,您可以使用Ajax将当前参数名发布到api中,然后进行更新,例如,您有一个target field按钮:

<a href="api/table_id" class="button target">value_in_the_html</a>

使用Ajax发布字段名称和值:

^{pr2}$

在视图.py公司名称:

^{3}$

相关问题 更多 >