【问题标题】:Insert django form into template dynamically using javascript?使用javascript动态将django表单插入模板?
【发布时间】:2011-02-01 03:04:44
【问题描述】:

我想在同一个模板上添加同一个 django 表单实例。我之前已经添加了一个,其他的使用 javascript 动态添加。

例如“form”是一个django表单newcell.innerHTML = {{ form.firstname }}; 问题是,当我提交表单时,请求对象只有一个值(即不使用 javascript 添加)。如何获取运行时动态添加的其他表单元素值的值。

这类似于 gmail 中的“附加另一个文件”功能,其中向用户显示文件上传字段,并且当用户单击“附加另一个文件”时,新字段会即时添加到 DOM " 加号按钮

【问题讨论】:

  • 不清楚您的问题是什么。请你解释得更详细一点。
  • 它类似于 gmail 中的“附加另一个文件”功能,其中向用户显示文件上传字段,并且当用户单击“附加”时,新字段会即时添加到 DOM另一个文件”加号按钮
  • 我认为您应该向我们展示更多您的代码。根据您所说的,我认为您很可能实际上是在尝试将多个值传递给单个表单字段。你应该看看“formsets”和“inline formsets”。

标签: django django-templates django-forms


【解决方案1】:

您可以随时尝试将您的FileField 分离为FileModel

看看下面的伪代码(就像基于内存的python——我现在已经移到clojure了)。

models.py

class FileModel(models.Model):
  file = models.FileField()
  ...

class ThingToWhichYoureAttaching(models.Model):
  name = models.CharField()
  attachments = models.ManyToManyField(FileModel)
  ...

forms.py

class FileForm(forms.ModelForm):
  class Meta:
    model=FileModel

class ThingForm(forms.ModelForm):
  attachments = forms.MultipleChoiceField()#override the manytomany form field with style field of your choice.
  class Meta:
    model=ThingToWhichYoureAttaching

当他们用加号按钮弹出窗口时,显示FileForm,但在主页上保持ThingForm不变。对于没有 javascript 的人,您还可以在主页上使用 ThingForm 设置初始 FileField。只需确保在 ThingForm 之前处理 FileForm,以便文件可用于事物。

在处理弹出表单时,您可以使用 AJAX(我推荐 jquery)将 FileForm 提交到服务器,并返回标记以在附件字段中插入文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多