Django ModelChoiceField是否预先填充了数据?

Django ModelChoiceField是否预先填充了数据?,django,forms,foreign-keys,field,Django,Forms,Foreign Keys,Field,我有一个名为Phase2Form的Django表单,它有一个名为purchase\u order的modelcoocefield。我希望在用户进入表单时已选择特定的采购订单。我知道如果使用CharField或类似工具,我将如何执行此操作,但我不知道如何使用modelcochefield执行此操作。我将知道ForeignKey采购订单的主键(它将是URL的一部分) 我尝试了以下方法,但没有成功 def escalate(request, po): if request.method == 'P

我有一个名为
Phase2Form
的Django表单,它有一个名为
purchase\u order
modelcoocefield
。我希望在用户进入表单时已选择特定的
采购订单
。我知道如果使用
CharField
或类似工具,我将如何执行此操作,但我不知道如何使用
modelcochefield
执行此操作。我将知道ForeignKey
采购订单的主键(它将是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,})

谢谢你的帮助

看起来您基于url的采购订单设置处于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,})

与此视图匹配的URL模式如何?@karthikr相关的模式是
URL(r'^po/(\d+)/p2/$,升级)
,这非常有意义。我现在无法访问该项目。我明天早上试试,看看是否有效。谢谢我刚刚尝试了你的解决方案,它似乎没有解决任何问题<代码>采购订单
在我转到page.Oops时仍然设置为
-----------
。不要介意。工作完美。我不小心移动了
请求。POST
术语。