【发布时间】:2018-01-11 04:37:00
【问题描述】:
在一个项目中,我必须处理大量订单(如购买)数据。一起 使用订单数据,我必须以某种方式生成状态信息 被缓存。我不确定管理此类数据的好方法。
型号
class Order:
buyer_name = TextField()
class OrderItem:
order = ForeignKey(Order)
quantity = IntegerField()
name = TextField()
要求
- 正在通过查看字符来检查买家名称的有效性 并查询外部 API。
- 还检查是否有来自同一买家的多个订单(→ 重复)。
- 用户必须能够根据他们的检查结果过滤订单。
-
最后但并非最不重要的一点是,每个订单都有一个直接依赖的条件 关于检查结果:
- 买家姓名有效,无重复订单:订单条件OK。
- 买家姓名有效,重复订单:订单条件为警告。
- 买家姓名无效:订单条件错误。
问题
我的问题:存储条件或信息等信息的好方法是什么? 检查结果?
我可能还需要查询每个订单的总数量 始终加入和汇总项目数量(性能)。
【问题讨论】:
-
你为什么不把那些“检查结果”和状态存储在订单中???
-
@brunodesthuilliers 我就是这样做的,但感觉不对。我还需要订单总数等数据。存储总计本身和用于计算总计的订单项,感觉很奇怪。
-
为什么你觉得它感觉不对? State 是 Order 的属性。这并不意味着它必须存储在数据库中。
-
@cezar 因为我必须让 Order.total 与基础数据保持同步,我觉得这在某种程度上表明存在设计缺陷。我不知道其他人是怎么做的,这就是我问的原因。 ;-) 如果它不在数据库中,则很难/不可能查询它,我想这是个问题。
-
如果 Order 有一些 State,这是使用其他可用数据计算的,您可以将其设为所谓的虚拟属性。我将通过一个简单的示例发布答案。
标签: python django database caching