如何使实例作为参数传递,使表格始终有效? 我想修改数据库中的元组。
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});
答案 0 :(得分:1)
如果Form
不是data
或None
不是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.POST
是QueryDict
,因此这里我们基本上为以下形式构造一个:
from django.http import QueryDict
ue_form = UEForms(QueryDict(), instance=ue)