keakon
2010-12-05 01:43:49 +08:00
楼主的表述真的很难懂…
没猜错的话,你是要把if NowDay==KCB.time[0] and NowTime==KCB.time[-1] and NowWeek in KCB.week改成GQL查询条件吧
简单来说就是不行,因为datastore不支持复杂的查询,只能将一个属性作为一个整体来查询,不能查询time[-1]这种
因此你只能这样:
KCBs = db.GqlQuery("SELECT * FROM kcb WHERE week = :1 ORDER BY date DESC LIMIT 1000", NowWeek)
for KCB in KCBs:
if NowDay==KCB.time[0] and NowTime==KCB.time[-1]:
#...
week是一个ListProperty,查询的时候直接用=就行了,IN的语义不是你理解的这样的
最后提醒一下,不是有特殊需求的话不要用GQL,因为查询较复杂时,构造非常不方便,而且性能很差。所有GqlQuery对象都能用等价且更方便高效的Query代替。