如何在 NDB 查询中将 Python 日期与 DateTimeProperty 进行比较

Bra*_*don 5 google-app-engine python-2.7 app-engine-ndb

我在尝试使用 python 日期对象来过滤 NDB 查询中的 DateTimeProperty 时遇到了一些困难。我意识到 DateTimeProperty (some_date) 没有日期属性,但是我可以做一些简单的事情,如下所示:

cls.query(supplied_date == cls.some_date.date).fetch()
Run Code Online (Sandbox Code Playgroud)

Gre*_*reg 3

如果不改变你的模型,这是不可能的。

最简单的选择是在日期时间属性上使用两个不等式过滤器(> date 00:00 和 <= date 23:59),但是您不能在查询中使用任何其他不等式。

(另一个?)另一个选项是引入第二个属性,其中包含您筛选的日期值:

class YourModel(ndb.Model):
  some_datetime = ndb.DateTimeProperty()
  some_date = ndb.ComputedProperty(lambda self: self.some_datetime.date)
Run Code Online (Sandbox Code Playgroud)

如果您只需要按日期过滤,那么您的 datetime 属性可以有indexed=False,但否则您将需要额外的索引。