我正在使用formset_factory
生成一堆表单,但我也希望使用这些表单显示一些HTML,这些HTML特定于最终会保存的对象。说:
Name: Chris
Color: Blue
Shoesize: [user input]
Name: Bologna
Color: Pink
Shoesize: [user input]
其中Name
和Color
以HTML格式显示,Shoesize
是某种字段。我尝试添加带有初始值的隐藏字段(使用formset_factory
参数创建initial
时初始化),但是当尝试POST这些表单时,如果他们没有&#39 ; t通过验证,初始值消失,隐藏字段为空(其中一些是必需的)。
我可以在字典中包含不仅仅包含发送到我的模板的字体集,但我没有办法将表格中的每个表单与信息相关联(除非通过表单中的属性,在POST期间没有通过)。我已尝试使用"禁用"的实际表单字段属性,但也没有通过验证发送。
我是否可以覆盖__init__
方法以包含一些变量(但那么如何将这些变量传递给formset_factory
?)
有没有办法做到这一点,或者最好不要使用formset_factory
而是构建我自己的表格字典(我不喜欢弄乱prefix
; formset_factory
为每个表单字段生成编号ID和类似的东西做得非常好。
修改:这不是模型表单。这是一种常规形式。
答案 0 :(得分:1)
您可以动态设置初始值,将其设置为已禁用,只显示其值。
class SizeForm(forms.Form):
name = forms.CharField(disabled=True)
size = forms.CharField()
def __init__(*args, **kwargs):
name_default = kwargs.pop('name_default', None)
super(form, self).__init__(*args, **kwargs)
if name_default:
self.fields['name'].initial = name_default
<form>
Name: {{ form.name.value }}
Size: {{ form.size }}
</form>
然后,当您在视图中调用表单时,您将向其传递name_default
关键字参数。