我将模型设置如下:
class Day(db.Model):
date = db.DateProperty()
total = db.FloatProperty()
class Event(db.Model):
desc = db.StringProperty()
amount = db.FloatProperty()
层次结构如下:用户>日>事件(用户有天。天有事件。)
当用户登录时,我想选择他们的日期(按照日期的范围说),然后每天我想获得他们的活动。我们只是说这些现在显示在列表中。
我应该使用parent属性来创建显式实体组吗?或者我应该在一天为用户添加引用属性,并在一天的事件中添加引用属性吗?
每种方法的优缺点是什么?性能考虑?可扩展性考虑?而且,我将如何以最佳方式查询。
谢谢!
答案 0 :(得分:1)
如果您需要在事务上一起更新日期和事件模型(例如,'total'字段需要随每个事件更新),请使用实体组。否则,请使用参考属性。
为了最有效地选择日期范围内的所有事件,您最好的选择是在某种程度上进行非规范化,并在事件上添加“日期”属性。然后,您可以在给定范围内对给定用户的所有事件进行查询,并根据需要从这些事件中获取Day实体。