【发布时间】: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