直接根据请求结果生成表单

时间:2019-05-11 18:31:02

标签: django forms

我想在显示时将表单和请求结果传递给这种模板,我从查询结果中得到一个带有值的表单。就像您通过django的管理页面修改元组时一样。怎么做 ? Views.py

def modification_ue(request, code):
     ue_form = UEForms()
     ue      = UE.objects.get(code_ue=code)
     return render(request, 'felyn/modifier.html', {'ue_form': ue_form, 'ue': ue})

1 个答案:

答案 0 :(得分:1)

可以将模型实例ue传递到ModelForm的实例,以使其预先填充其中的值。

例如,

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

UEForms不是ModelForm而是django.forms.Form的子类的情况下,您需要通过将其作为字典传递来绑定不同的数据。

例如,

from django.forms.models import model_to_dict
#...
ue = UE.objects.get(code_ue=code)
ue_dct = model_to_dict(ue)
ue_form = UEForms(ue_dct)
return render(request, 'felyn/modifier.html', {'ue_form': ue_form, 'ue': ue})

但是,我建议利用Django ModelFormmodelform_factory,因为在表单中需要进行最少的自定义以将模型实例链接到表单。