Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript将django表单动态插入模板?_Django_Django Templates_Django Forms - Fatal编程技术网

使用javascript将django表单动态插入模板?

使用javascript将django表单动态插入模板?,django,django-templates,django-forms,Django,Django Templates,Django Forms,我想在同一模板上添加相同的django表单实例。我已经在前面添加了一个,另一个使用javascript动态添加 例如,“form”是一个django表单:newcell.innerHTML={{form.firstname}; 问题是,当我提交表单时,在视图中,请求对象只有一个值(不是使用javascript添加的值)。如何获取在运行时动态添加的其他表单元素值 这有点像gmail中的“附加另一个文件”功能,当用户点击“附加另一个文件”加号按钮时,用户会看到一个文件上载字段,新字段会被动态添加到D

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

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


这有点像gmail中的“附加另一个文件”功能,当用户点击“附加另一个文件”加号按钮时,用户会看到一个文件上载字段,新字段会被动态添加到DOM中

您可以尝试将
文件字段
分离到
文件模型中

看看下面的伪代码(比如基于内存的python——我现在已经转到clojure)

models.py

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

class ThingToWhichYoureAttaching(models.Model):
  name = models.CharField()
  attachments = models.ManyToManyField(FileModel)
  ...
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
forms.py

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

class ThingToWhichYoureAttaching(models.Model):
  name = models.CharField()
  attachments = models.ManyToManyField(FileModel)
  ...
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
的初始文件字段。只需确保在
之前处理
FileForm
表单
,以便文件可用于该对象


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

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