У меня есть следующая форма с динамическими полями:
1 ) В 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. Я думал, что это запрос. 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, а также проверка формы. Спасибо