我有两种形式:一种获取用户信息(名称,生日等):formA。另一个包含文本字段的用户可以将文本输入到:formB。
formB的模型具有实际的文本字段,以及将其链接到此文本所属的用户的“名称”。该字段称为text_name。 text_name是链接到Name模型的外键(链接到formA)。
在我的视图模板中,我只允许用户看到他们可以从formB输入信息的文本框,他们也可以看到formA中的所有字段。 这意味着不会显示text_name下拉框。
formA目前正在预先填充来自不同会话的数据。
这是我的观点:
def name(request):
ses = request.session.get('ses', None)
formA = Name_Form(request.POST, instance = ses)
formB = Text_Form(request.POST or None)
formB.text_name = ses
if request.method == 'POST':
formB.text_name = ses
if formA.is_valid() and formB.is_valid():
formB.note_job = ses
a = formA.save()
a.save()
b = formB.save()
b.save()
formB无效,因为未填充text_name。我尝试使用这一行填充:
formB.text_name = ses
但这没效果。
如何使用已输入的信息自动填充text_name,而不在模板中实际显示text_name,从而强制用户实际手动选择相应的text_name。
答案 0 :(得分:1)
如果要在保存之前对modelform的模型实例进行额外处理,则至少有两个简单选项:
在通过form.instance保存之前访问modelform模型实例:formB.instance.text_name = ses; formB.save()
使用commit=False手动保存:objB = formB.save(commit=False); objB.text_name = ses; objB.save()
,在这种情况下,请确保Text_Form的excluded field list中包含“text_name”。