【问题标题】:Django ModelChoiceField pre-filled with data?Django ModelChoiceField 预填充数据?
【发布时间】:2013-06-06 16:32:45
【问题描述】:

我有一个名为 Phase2Form 的 Django 表单,它有一个名为 purchase_order 的 ModelChoiceField。我希望在用户转到表单时已经选择了一个特定的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,})

感谢您的帮助。

【问题讨论】:

  • 与此视图匹配的 URL 模式如何?
  • @karthikr 相关模式为url(r'^po/(\d+)/p2/$', escalate)

标签: django forms foreign-keys field


【解决方案1】:

看起来您基于 url 的 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,})

【讨论】:

  • 这很有意义。我现在无法访问该项目。我会在早上尝试它,看看它是否有效。谢谢!
  • 我刚刚能够尝试您的解决方案,它似乎没有解决任何问题。当我转到页面时,purchase_order 仍设置为 ---------。
  • 糟糕。没关系。完美运行。我不小心也移动了request.POST 术语。
猜你喜欢
  • 1970-01-01
  • 2012-08-14
  • 2012-03-28
  • 2019-05-02
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多