【发布时间】:2017-01-04 06:20:30
【问题描述】:
我陷入了一个设计问题。
想象一个订单模型和材料模型,
class Material(models.Model):
material_code = models.CharField(max_length=40)
standard_price = models.DecimalField()
class Order(models.Model):
customer = models.ForeignKey(Customer)
class OrderItems(models.Model):
order = models.ForeignKey(Order)
material = models.ForeignKey(Material)
price = models.DecimalField()
在我的订单详细信息视图中,我使用 inlineformset_factory(Order, OrderItems) 填充订单项
我想要的行为如下:
如果用户想添加更多的订单项,我想将用户重定向到材料列表页面,用户选择一种或多种材料并确认,然后我将他重新重定向到新添加的项目的订单详细信息视图。
我正在考虑使用这些功能,例如带有中间页面的 django 管理操作。
在将新的订单项添加到订单之前,我还想从材料标准价格设置订单项价格,这意味着我想在添加到订单项之前修改表单集的值。
我想在这里问的问题是,是否有更简单的方法来实现这一点,似乎将表单集数据存储到会话并用新项目重新填充表单集并不容易。我会考虑这个问题的另一种解决方案。
顺便说一下,我不想要js解决方案,想象一下我的订单模型上的一个字段grandtotal,我可以计算总项目数量,使用js解决方案我可能必须用js做计算逻辑,用户添加一个项目并更改价格然后我用js进行总计计算。这是我想要避免的。
【问题讨论】:
-
总问题很容易避免。永远不要从客户那里接受你想要控制的东西。所以“加入购物车”js 调用只提交商品 ID 和数量。它接收新的购物车总数(在服务器上计算)并呈现更新的迷你购物车。问题解决了。