我有一个可能引用另一个模型的模型,它有一个completed_on日期。
class Game(db.Model):
challenge = db.ReferenceProperty(Challenge, required=False)
completed_on = db.DateTimeProperty(default=None)
我希望能够选择在特定时间段之前完成的所有已完成的挑战赛。问题是我不能有2个不等式
但是http://code.google.com/appengine/docs/python/datastore/queries.html说:
仅在一个属性上允许不等于过滤器:
这意味着我无法做challenge > '' and completed_on < datetime_value
但是我可以is_challenge=True and completed_on < datetime_value
,只要我在数据库中添加一个名为is_challenge的新列。考虑到这一点,是否有人说服数据存储区将挑战视为布尔值?
似乎无法以这种方式完成,我希望还有其他方法可以实现这一目标,而无需向模型添加另一个列,并且可能还有另一个索引与该列一起使用。
我希望游戏列表足够大,不想在python中为每个显示的页面过滤它。
答案 0 :(得分:0)
执行此操作的唯一方法是,如您所见,添加一个布尔属性,指示是否设置了challenge
。您可以使用ComputedProperty:
class Game(db.Model):
challenge = db.ReferenceProperty(Challenge, required=False)
completed_on = db.DateTimeProperty(default=None)
@db.ComputedProperty
def has_challenge(self):
return self.challenge is not None