我有以下形式動態字段:is_valid總是假(Django的)
)在models.py我希望在一個值的形式傳遞給查詢
class InsertValuesForm(forms.Form):
def __init__(self, idfield, *args, **kwargs):
super(InsertValuesForm, self).__init__(*args, **kwargs)
for f in Parameter.objects.filter(id=idfield):
if Part.objects.get(parameter=f.parameter_name).isfunction:
self.fields.update({
f.parameter_name) : forms.CharField(widget=forms.TextInput())})
1)在views.py
def something(request)
#......
idfield = request.GET.get('feid','0')
form = InsertValuesForm(request.POST,idfield)
if request.method == 'POST':
if form.is_valid():
#some code
else:
form = InsertValuesForm(idfield)
return render_to_response('fuzz/configuration.html', {
'form': form,
},context_instance=RequestContext(request))
在第1種情況下,我能夠在for循環中顯示動態字段。然而,在填寫所有字段並提交(POST)之後,表單向我拋出了此錯誤:
int()參數必須是字符串或數字,而不是'QueryDict'。我在想這是導致錯誤的request.POST。 對這個問題做了一些研究之後,有這樣類似的解決方案:
http://groups.google.com/group/django-users/browse_thread/thread/ddefd76324ffe6cd http://groups.google.com/group/django-users/browse_thread/thread/495a917396b20b37/c430d71a31204e5d#c430d71a31204e5d
2)在models.py
class InsertValuesForm(forms.Form):
def __init__(self, *args, **kwargs):
idfield = kwargs.pop('idfield', False)
super(InsertValuesForm, self).__init__(*args, **kwargs)
for f in Parameter.objects.filter(id=idfield):
if Part.objects.get(parameter=f.parameter_name).isfunction:
self.fields.update({
f.parameter_name) : forms.CharField(widget=forms.TextInput())})
和
的以下是views.py的片段(與數字1相同)
def something(request)
#......
idfield = request.GET.get('feid','0')
form = InsertValuesForm(request.POST,idfield)
if request.method == 'POST':
if form.is_valid():
#some code
else:
form = InsertValuesForm(idfield)
return render_to_response('fuzz/configuration.html', {
'form': form,
},context_instance=RequestContext(request))
現在上面的代碼甚至不顯示動態文本框,只是顯示爲空白頁。欣賞是否有人可以點亮
如何顯示這些動態文本框,並同時通過request.POST獲取這些文本框的值,並使表單生效。謝謝
感謝丹尼爾指出的錯誤! – ndantonio 2011-05-16 10:59:26