我想在同一个模板上添加相同的django表单实例。我已经添加了一个,其他使用javascript动态添加。
例如'form'是 django表单:newcell.innerHTML = {{ form.firstname }};
问题是,当我提交表单时,在视图中请求对象只有一个值(不是使用javascript添加)。如何获取动态添加的其他表单元素值的值。
类似于gmail中的“附加另一个文件”功能,向用户显示文件上载字段,当用户点击“附加另一个文件”时,会立即将新字段添加到DOM中“加按钮
答案 0 :(得分:0)
您可以随时尝试将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。只需确保在FileForm
之前处理ThingForm
,以便文件可用于事物。
处理弹出窗体时,您可以使用AJAX(我建议jquery)将FileForm提交给服务器,并返回标记以在“附件”字段中插入文件。