Django管理存储动态formset添加了ajax

时间:2011-12-23 23:35:46

标签: django django-admin django-forms

我目前正在使用django admin实现一个解决方案,它允许用户在db中定义一个产品,然后自定义属性和细节,更多细节可以通过一个公共属性聚合,这允许我用ajax查询a自定义视图,它返回一些JSON数据,以便在同一个formset视图中直接构建我需要的表单字段(操作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的select)。

所有工作都很好,但是当有人填写表格(用选择的产品下订单)时,我还需要将这些参考存储在数据库中。此表单显示为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链接回复。 三江源。

1 个答案:

答案 0 :(得分:1)

最后我得到了一个有效的解决方案,

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