如何使用Django表单实现添加多个对象?

时间:2013-04-21 04:40:02

标签: django forms

如何使用Django从单个表单添加多个对象?

例如:如果我有一个存储销售产品的销售表单。

想象一下这个表格:

datetime: [_____________]
customer: [_____________]
product: [______________] ---> How should I implement adding multiple products
                               in the same form?
cost: [_________________] 

Save (button)

提示:这只是一个问题,如果你有一些想法请告诉我,因为我不知道怎么做。

感谢

1 个答案:

答案 0 :(得分:2)

一种方法是使用Formset。例如,您可能在Django admin中看到的表单集,用于将多个相关对象显示为内联。

另一种方式可能涉及 AJAX ,示例解决方案:

  • “已添加的产品”是一个简单的<ul>列表,其中的产品已按订单添加
  • “搜索产品”是纯文本字段,用户输入产品名称或SKU
  • 用户输入通过AJAX发送到服务器,服务器返回相关产品列表
  • 向用户显示这些产品建议
  • 当用户点击产品名称时,会发出另一个AJAX请求,要求将给定产品与订单
  • 相关联
  • 请求完成后,“添加的产品”列表将通过AJAX刷新,新添加的产品将在此处显示

这将要求您首先创建一个临时订单,以后可以通过单独的请求附加产品。 Formsets没有这个要求,但我个人并没有经常使用它们,它们看起来有点麻烦。