【问题标题】:Django admin store dynamic formset added with ajax使用 ajax 添加的 Django 管理存储动态表单集
【发布时间】:2012-01-27 03:21:06
【问题描述】:

我目前正在使用 django admin 实现一个解决方案,它允许用户在 db 中定义一个产品,然后自定义属性和详细信息,更多详细信息可以通过一个公共属性聚合,这允许我使用 ajax 查询自定义视图返回一些 JSON 数据以自动构建我直接在同一个表单集视图中需要的表单字段(操作 DOM)。

当前的数据库设计遵循以下架构: Catalog(name, description, photo) Product(rel_catalog, name, base_price, photo, manufacturer_email) ProductDetail(rel_product, rel_attribute, percentage_price, fixed_price) ProductAttribute(rel_product, name, description)

如您所见,我有一个目录,其中可以有更多产品,每个产品都有很多详细信息,按属性汇总。然后我简单地默认显示目录,然后选择该目录的所有可用产品,然后选择正确的产品,我获得完整的表格(每一行都有一个带有 ProductAttribute.name 的标签和一个带有相关 ProductDetail 的选择)。

所有工作都非常好,但是当有人填写表格(使用所选产品下订单)时,我还需要将此引用存储在数据库中。此表单显示为 StackedInline(ModelAdmin 用于订单)。 我不知道每个产品可能有多少个选项,所以我想用这个设计来跟踪订单: Order(customer, status, notes, tot_price, inserted_by) OrderItem(rel_order, catalog, product, unit_price)

但我不知道如何存储动态添加的输入... 我想实现 OrderItemProperty(rel_orderitem, rel_productdetail, rel_productattribute) 来存储每个输入...但是如何循环遍历这些未知字段?

也许你建议更好的设计?

如果您需要更多代码,请提出要求,我会回复一个 pastebin 链接。 谢谢。

【问题讨论】:

  • 请说明您对“当有人完成表单”表示什么用户 (javascript) 事件?用户按下按钮,某些字段失去焦点?
  • 当有人点击“保存”按钮提交带有动态添加的 ajax 字段(必须以某种方式存储)的表单数据时。

标签: django django-admin django-forms


【解决方案1】:

我终于找到了一个可行的解决方案,

我创建了一个自定义视图,覆盖了默认的“add/”视图,这样我可以自定义我想要的任何内容,并且我可以读取处理每个验证的 POST 数据,然后将数据放入正确的模型中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2013-02-06
    • 2015-10-29
    • 2017-07-11
    • 2020-06-30
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多