【问题标题】:Disable fields validation for entire form禁用整个表单的字段验证
【发布时间】:2014-05-26 05:01:22
【问题描述】:

出于调试目的,我需要禁用整个表单的字段验证,因此它将始终有效。

我尝试过的:

  • 覆盖形式 clean()full_clean() 方法,但看起来像我的 view 的声明 return render_to_response() 没有调用这样的方法,我也不能直接从 view 调用任何表单方法(idk 为什么)
  • 设置所有字段required=False,但我不知道为什么它不适用于特定字段(也许需要重新同步db?..)或者我不知道如何将其设置为所有字段散装
  • 清理form._errors dict,像这样: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


【解决方案1】:

好的,似乎上述所有解决方案都不起作用,因为根本没有使用该表单:D 在 vi​​ew-n-template 之间完成的所有工作。

如果我现在应该删除这个问题,我想知道.. o_0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-09
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多