Google Appengine数据存储-无法通过不同的列进行订购

问题描述 投票:0回答:1

我有一个包含5个字段的表格。我对其中一列进行了查询,当我尝试按另一列进行排序时,这是不允许的。这是我的基本结构

class jobs(ndb.Model):
    category        = ndb.StringProperty()
    title           = ndb.StringProperty()
    content         = ndb.TextProperty()
    last_date_apply = ndb.DateTimeProperty()
    date_of_posting = ndb.DateTimeProperty()

    current_ts = datetime.datetime.now() + datetime.timedelta(seconds = 5.5*60*60)
    job             = jobs()
    query1          = job.query(jobs.last_date_apply >= current_ts).order(jobs.date_of_posting)

[这里,我试图获取last_date_apply大于当前ts的数据,并且其顺序应为date_of_posting。错误明确指出为“ BadRequestError:第一个排序属性必须与应用不等式过滤器的属性相同。在您的查询中,第一个排序属性是date_of_posting,但不等式过滤器位于last_date_apply

我如何进行查询,使查询仅在条件为last_date_apply> = current_ts的情况下才能获得,因此我需要根据date_of_posting对其进行排序。如果不允许,该如何解决。我可以做相反的事情,但是我认为读取的次数会更多。

python google-app-engine google-cloud-datastore
1个回答
0
投票

您需要首先对字段last_date_apply进行排序。

query1 = job.query(jobs.last_date_apply >= current_ts).order(jobs.last_date_apply, jobs.date_of_posting)

# OR

query1 = job.query(jobs.last_date_apply >= current_ts).order(jobs.last_date_apply).order(jobs.date_of_posting)

为文档提供参考链接:https://cloud.google.com/appengine/docs/standard/python/ndb/queries#order

© www.soinside.com 2019 - 2024. All rights reserved.