如何使表格不受约束?

时间:2019-05-12 07:14:28

标签: django forms validation

如何使实例作为参数传递,使表格始终有效? 我想修改数据库中的元组。

ue   = UE.objects.get(code_ue='INF401')
>>>ue_form = UEForms(instance=ue)
>>>ue_form.is_valid()
False

这是views.py


def modifier_ue(request, code):

    if request.method == 'POST':

        ue_form = UEForms(request.POST);
        if ue_form.is_valid() and 'supprimer' in request.POST:
                return HttpResponse('supprimer');

        elif ue_form.is_valid() and 'continuer' in request.POST:
            return HttpResponse('continuer');


        elif ue_form.is_valid() and 'quitter' in request.POST:
            return HttpResponse('quitter');


        else:
            return HttpResponse(ue_form.errors.as_data())


    else:
        ue      = UE.objects.get(code_ue=code);
        ue_form = UEForms(instance=ue);
        return render(request, 'felyn/admin/modifier_ue.html', {'ue_form': ue_form, 'code': code});

1 个答案:

答案 0 :(得分:1)

如果Form不是dataNone不是files,则绑定None。实际上,在source code [GitHub]中,我们看到:

class BaseForm:

    # ...

    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                 initial=None, error_class=ErrorList, label_suffix=None,
                 empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None):
        self.is_bound = data is not None or files is not None
        # ...

因此,我们只需要在此处传递一些内容到data,例如空的QueryDict [Django-doc]request.POSTQueryDict,因此这里我们基本上为以下形式构造一个:

from django.http import QueryDict

ue_form = UEForms(QueryDict(), instance=ue)