Python 在简单的电子商务数据库中创建OrderItem或将LineItem链接到订单?
我正在使用django rest框架从头开始构建自己的电子商务系统 以下是对我的系统架构的描述: Db format=PostgresSQL 一个账户有许多行项目(又称CartItems) 一个行项目有一个帐户(FK),一个产品(FK) 一个账户有多个订单Python 在简单的电子商务数据库中创建OrderItem或将LineItem链接到订单?,python,django,django-rest-framework,backend,Python,Django,Django Rest Framework,Backend,我正在使用django rest框架从头开始构建自己的电子商务系统 以下是对我的系统架构的描述: Db format=PostgresSQL 一个账户有许多行项目(又称CartItems) 一个行项目有一个帐户(FK),一个产品(FK) 一个账户有多个订单 行项目字段: 账户FK 产品FK 数量 价格(用于将产品型号指定的任何折扣(范围0-1)考虑在内的序列化器方法字段) 我的问题在于帐户是否能够创建订单 到目前为止,我已经确定了两种方法: 1) 通过添加以下字段修改行项目模型: Is
行项目字段:
- 账户FK
- 产品FK
- 数量
- 价格(用于将产品型号指定的任何折扣(范围0-1)考虑在内的序列化器方法字段)
我的问题在于帐户是否能够创建订单 到目前为止,我已经确定了两种方法: 1) 通过添加以下字段修改行项目模型:
- IsMountedForOrder(用于立即购买)-布尔字段
- 订单(外键)
- 订单FK
- 产品FK(从自有行项目解析)
- 数量(从拥有的行项目中解析)
- 价格(从自有行项目解析)
要么修改这两种方法,要么找出我可能忽略的架构缺陷。谢谢大家! 根据您的电子商务系统的复杂程度,我的设计目标与此类似:
1. Account
2. Order { account_id, total, tax, address, etc}
3. OrderLine { order_id, product_id, price, discount, quantity_ordered, quantity_fulfilled, etc}
4. Cart { account_id, subtotal, tax, coupons, is_abandoned, address, etc}
5. CartLine { cart_id, product_id, price, discount, quantity, etc}
通常,在下订单之前,您不希望创建订单行。如果要在服务器上存储购物车信息,请创建一个单独的表来维护这些信息
用户将项目添加到购物车后,更新购物车/购物车行。在他们进行结帐并完成付款后,获取购物车(+CartLine)对象并从中创建订单(+OrderLine)
如果您想将这种复杂性降低一点,我建议不要将购物车信息存储在表中,只需使用request.session
存储购物车信息即可
当用户完成订单时,将购物车转换为订单+订单行
如果你想要更多的自由(增加了复杂性),而不是购物车+购物车,我会使用Checkout+CheckoutLine表来存储更多的信息,而不仅仅是购物车信息(比如客户在结账过程中达到的步骤、付款信息等)
根据我对你问题的理解,我希望能回答你的一些问题。这是主题中的一个问题,正文中有许多问题。回答这个问题:FK仅受数据库的限制,因此可以添加任意数量的FK。每个表的insert/update都会对性能造成影响,但小型表不会出现问题。我注意到了问题格式中的缺陷(我是新来的),并进行了相应的编辑。谢谢你的回答!:)这绝对有帮助,谢谢你抽出时间写这篇文章!实际上,我最终使用了类似于checkout+checkoutLine功能的东西——创建了订单模型与lineItem模型的关联,并进行了状态更新。这稍微增加了复杂性,但值得权衡,因为它简化了系统,并且能够在时机成熟时有效地扩展!非常感谢你的帮助!Cheers@Rishi苏拉那我很高兴能帮上忙。如果这对您有所帮助,如果您能选择此作为答案并结束问题,我将不胜感激:)