【发布时间】:2014-05-26 05:01:22
【问题描述】:
出于调试目的,我需要禁用整个表单的字段验证,因此它将始终有效。
我尝试过的:
- 覆盖形式
clean()和full_clean()方法,但看起来像我的 view 的声明return render_to_response()没有调用这样的方法,我也不能直接从 view 调用任何表单方法(idk 为什么) - 设置所有字段
required=False,但我不知道为什么它不适用于特定字段(也许需要重新同步db?..)或者我不知道如何将其设置为所有字段散装 - 清理
form._errorsdict,像这样:self._errors = ErrorDict(),但我不知道在哪里写。
查看:
def step_1(request, vac_id):
b_fl = False
try:
if request.META['HTTP_REFERER'].find(u'step-2') == -1:
b_fl = True
except:
b_fl = True
if b_fl:
for key in res_keys:
for skey in res_keys[key]:
if skey in request.session:
del request.session[skey]
if vac_id:
vacancy = Vacancy.objects.get(pk=vac_id)
else:
vacancy = None
res_list = {}
for i in res_keys[1]:
if i in request.session:
res_list[i] = request.session[i]
else:
res_list[i] = None
if 'vac_id' in request.session:
vac_id = int(request.session['vac_id'])
if vac_id:
pr_vacancy = Vacancy.objects.get(pk=vac_id)
else:
pr_vacancy = None
else:
pr_vacancy = None
if 'vac_text' in request.session:
vac_text = request.session['vac_text']
else:
vac_text = None
return render_to_response('step_1.html',
{'vacancy': vacancy,
'res_list': res_list,
'pr_vacancy': pr_vacancy,
'vac_text': vac_text
},
context_instance=RequestContext(request))
表格:
class FeedbackForm(forms.Form):
vacancy = forms.IntegerField(required=False)
vacancy_text = forms.CharField(required=False)
salary_min = forms.CharField()
salary_opt = forms.CharField()
<..>
<lots of fields here>
<..>
recommendations = forms.ModelMultipleChoiceField(required=False)
dis_rec_reas = forms.CharField(max_length=255, required=False)
how_about_us = forms.CharField(required=False)
【问题讨论】:
-
clean()方法适用于 form,而不是视图。您正在调试的实际问题是什么?可能有比这更好的解决方案 - 这是非常骇人听闻的。 -
@BurhanKhalid 我知道,我在形式上覆盖了它,而不是在视图中。我的实际问题确实是快速禁用整个表单的验证。 :)
-
我认为如果您发布给您带来问题的代码会更好;看来您的问题出在视图中:“似乎我的视图语句 return render_to_response() 没有调用此类方法,我也不能直接从视图中调用任何表单方法”。跨度>
-
@BurhanKhalid fxd,请看
-
我在您的视图中没有看到您甚至使用该表单的任何地方。也许您发布了错误的查看方法?
标签: django forms validation