【发布时间】:2014-09-12 13:51:26
【问题描述】:
我是 Django 的新手,我试图在我的 views.py 中保存一个模型表单两次,因为我想在数据库中创建两个不同的行。我能够保存表单并在数据库中创建两行,但不幸的是,第二个表单中的值都保存在我的两行中。 我想在单击提交按钮一次时为同一个模型保存两个不同的行。
我浏览了帖子 - django submit two different forms with one submit button 和 Django: saving multiple modelforms simultaneously (complex case) ,但它没有回答我的查询,因为我想保存相同的模型表单两次。
以下是我保存表单的功能:
@csrf_protect
@login_required
@never_cache
def testQuotaReq(request):
form1 = quotaRequestForm(request.POST or None)
form2 = quotaRequestForm(request.POST or None)
if form1.is_valid() and form2.is_valid():
form1.process()
save1 = form1.save(commit=True)
save1.save()
form2.process()
save2 = form2.save(commit=True)
save2.save()
return HttpResponse("Form1 Form2 saved")
#else:
# return HttpResponse('Thanks for your request! Your request id is: %d .' % (save1.pk) )
else:
form1 = quotaRequestForm()
form2 = quotaRequestForm()
return render_to_response('quotaRequest.html',
locals(),
context_instance=RequestContext(request))
上面的这段代码在表中创建了以下行(简化为突出显示问题):
Id Descr Val CPU RAM Inst
76 testing 18 180 18432 18
75 testing 18 180 18432 18
74 testing 11 110 11264 11
73 testing 11 110 11264 11
在这里,从 HTML 接收到的第 75 行和第 76 行的值是不同的。 73 和 74 也是如此。我错过了什么吗?感谢您的帮助!
编辑:
HTML 代码:
<form method='POST' action='' id="formSubmit"> {% csrf_token %}
<div class="form1">
{{ form1.as_p }}
</div>
<div class="form2">
{{ form2.as_p }}
</div>
<a class="btn btn-info" href="/quotaRequest">Cancel Request</a>
<button type="submit" class="btn btn-info"><b>Submit Request</b></button>
</form>
另外,我在views.py 中编辑了函数,如下所示,但我仍然无法在数据库中为同一个modelForm 添加两个不同的行。我不清楚如何使用前缀标签。感谢您的帮助!
@csrf_protect
@login_required
@never_cache
def testQuotaReq(request):
form1 = quotaRequestForm(request.POST or None, prefix="form-1")
form2 = quotaRequestForm(request.POST or None, prefix="form-2")
if form1.is_valid() and form2.is_valid():
form1.process()
save1 = form1.save(commit=True)
save1.save()
form2.process()
save2 = form2.save(commit=True)
save2.save()
return HttpResponse("Form1 Form2 saved")
# else:
# form1 = quotaRequestForm()
# form2 = quotaRequestForm()
return render_to_response('quotaRequest.html',locals(), context_instance=RequestContext(request))
【问题讨论】:
标签: django django-admin django-views django-forms