我正在尝试使用request.GET数据初始化时设置一些初始表单数据:
获取数据:
http://localhost:8000/form_builder/SoW/create/?project=1&value=100
表格:
class SoWForm(forms.ModelForm):
class Meta:
model = SoW
fields = (
'project',
'ref',
'date_signed',
'sow_file',
'value',
'status'
)
def __init__(self, *args, **kwargs):
super(SoWForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
表单初始化:
form = SoWForm(initial=request.GET)
所发生的是所有正在设置的表单字段都被填充为列表:
它打破了当然的形式:
有没有办法避免这种情况?在尝试获取数据和内容时,它是否在途中某处(request.GET)?
dict(request.GET.iteritems())
会将request.GET
转换为适当的' dict为初始数据,但不是默认行为错误?
答案 0 :(得分:0)
问题不在于表单,而在于您使用填充表单的方式。 QueryDicts是一个特殊的dict子类,旨在支持查询字符串或POST数据中多个值的可能性,例如:
>>> QueryDict('a=1&b=2&b=3')
<QueryDict: {u'a': [u'1'], u'b': [u'2', u'3']}>
并且,正如您所发现的那样,它不适合用作表单初始数据。
您已经找到了解决方法;我建议你继续这样做。