我目前正在使用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链接回复。 三江源。
答案 0 :(得分:1)
最后我得到了一个有效的解决方案,
我创建了一个自定义视图,覆盖了默认视图"添加/"通过这种方式,我可以自定义我想要的任何内容,并且可以读取处理每个验证的POST数据,然后将数据放入正确的模型中。