gql特定的聚合函数

时间:2010-10-20 18:44:10

标签: google-app-engine

假设如下:

class events(db.model):
  eventDate = db.DateProperty()
  eventItem = db.ReferenceProperty(items)

class items(db.model):
  itemCode = db.IntegerProperty()
  itemTitle = db.StringProperty()

现在,如果我将来有多个特定项目的活动,我如何显示所有项目的列表,只显示每个项目的下一个发生的事件?

我在项目类中尝试了一个聚合字段:

  itemNext = db.DateProperty()

在设置事件时会更新,但问题是当事件被更改或删除时会发生更多的调用以清空它或更改它(除非我遗漏了某些东西)

2 个答案:

答案 0 :(得分:1)

是否会出现下一个事件是将来的日期和未来的日期最接近的事件?如果是这样,我会做这样的事情:

def get_next(for_item):
    next_event = events.all().filter('eventItem = ', for_item.key()).filter('eventDate >', datetime.datetime.now()).order('eventDate').get()

    return next_event

答案 1 :(得分:0)

您最好的选择是保留对下一个事件的引用,并为其执行数据存储查找。是的,这将需要在修改或删除关联项目时更新这些记录。