【问题标题】:How to compare a python date against a DateTimeProperty in an NDB query如何在 NDB 查询中将 python 日期与 DateTimeProperty 进行比较
【发布时间】:2013-03-01 13:27:37
【问题描述】:

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

cls.query(supplied_date == cls.some_date.date).fetch()

【问题讨论】:

    标签: google-app-engine python-2.7 app-engine-ndb


    【解决方案1】:

    不改变你的模型是不可能的。

    最简单的选择是在 datetime 属性上使用两个不等式过滤器(> date 00:00 和

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

    class YourModel(ndb.Model):
      some_datetime = ndb.DateTimeProperty()
      some_date = ndb.ComputedProperty(lambda self: self.some_datetime.date)
    

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

    【讨论】:

    • 这就是我害怕的。我考虑了不等式过滤器,但认为必须有一种更简单的方法来处理这个问题。我认为使用不等式过滤器是可行的方法。感谢您的洞察力。
    • 对我不起作用:BadValueError: Unsupported type for property some_date: <type 'datetime.date'>
    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多