django-forms - Django 窗体传递参数

  显示原文与译文双语对照的内容
0 0

我有一个动态表单,并且在post方法中得到了一个错误,因为参数"waysnumber"。 问题在于"formulari = WayForm ( request.post, request.files ) ) 行,在post方法中。 它从WayForm执行 function init(),现在没有名为waysNumber的参数。 这是传递参数的正确方法? 这是我的代码:

forms.py:


class WayForm(forms.Form):

 def __init__(self, *args, **kwargs): 
 waysNumber = kwargs.pop("waysNumber")
 super(WayForm, self).__init__(*args, **kwargs)
 CHOICES = (('1','Pista',),('2','Corriol',)) 
 for i in range(waysNumber):
 self.fields["Descripcio"+str(i)]= forms.CharField(widget=forms.Textarea(),label="Descripcio"+str(i))
 self.fields["Tipus"+str(i)] = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES, label="Tipus de camí"+str(i))

views.py:


def acoplar_track(request, track_id): 

 if request.method=='GET':
 track = get_object_or_404(Track, id=track_id) # obte el track i la zona corresponent al track 

 newWays_l = x.getTrackWays() # obte les ids dels nous camins que s'afegiran

 formulari = WayForm(waysNumber = len(newWays_l)) 
 return render(request,'principal/wayForm.html')

 else:
 formulari = WayForm(request.POST, request.FILES)
 if formulari.is_valid(): 
. . . 
 return render_to_response('principal/inici.html', context_instance=RequestContext(request))

感谢你的帮助!

时间: 原作者:

0 0

问题是,你不能跨请求持久化值。 完成后,WayForm 实例上不存在你的参数。 若要解决这里问题,可以像这样初始化窗体:


def acoplar_track(request, track_id):
 newWays_l = x.getTrackWays()
 formulari = WayForm(request.POST or None, request.FILES or None,
 waysNumber = len(newWays_l))

 if request.method=='GET':
 track = get_object_or_404(Track, id=track_id)
 return render(request,'principal/wayForm.html')
 else:
 if formulari.is_valid(): 
 return render_to_response('principal/inici.html',
 context_instance=RequestContext(request))

原作者:
...