Django ModelChoiceField预先填充了数据?

时间:2013-06-10 22:15:08

标签: django forms foreign-keys field

我有一个名为Phase2Form的Django表单,其中ModelChoiceField名为purchase_order。我想在用户转到表单时选择一个特定的purchase_order。我知道如果它在CharField或类似地方,我会怎么做,但我不知道如何使用ModelchoceField执行此操作。我将知道ForeignKey purchase_order的主键(它将成为URL的一部分)。

我尝试了以下操作,但没有用。

def escalate(request, po):
  if request.method == 'POST':
    form = Phase2Form(request.POST, initial={'purchase_order': PurchaseOrder.objects.get(pk=po) })
    if form.is_valid():
      form.save()
      return HttpResponseRedirect('/po/p2/')
    else: 
      return render(request, 'input.html', {'input_type': 'Phase 2', 'formset': form, 'error': True})
  else: 
    form = Phase2Form()
    return render(request, 'input.html', {'input_type': 'Phase 2','formset': form,})

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

看起来您基于网址的purchase_order设置位于request.POST条件中,该条件仅在表单发布时设置。将初始值设置向下移动到else条件。

  else: 
    form = Phase2Form(initial={'purchase_order': PurchaseOrder.objects.get(pk=po) })
    return render(request, 'input.html', {'input_type': 'Phase 2','formset': form,})