Google app engine 仿效;或;数据存储中的条件

Google app engine 仿效;或;数据存储中的条件,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我将谷歌应用程序引擎与Python(Django)结合使用。 如何模拟“从bla中选择*,其中touser=common.userstats(“key”)或fromuser=common.userstats(“key”)按日期排序ASC” 我在想这样的事情,但我不能按我想要的顺序来做 recievedlist = models.P1.all() recievedlist.filter("touser =", common.userstats("key")) plus1li

我将谷歌应用程序引擎与Python(Django)结合使用。 如何模拟
“从bla中选择*,其中touser=common.userstats(“key”)或fromuser=common.userstats(“key”)按日期排序ASC”

我在想这样的事情,但我不能按我想要的顺序来做

    recievedlist = models.P1.all()
    recievedlist.filter("touser =", common.userstats("key"))
    plus1list = recievedlist.fetch(50)

    sendlist = models.P1.all()
    sendlist.filter("fromuser =", common.userstats("key"))
    plus1list += sendlist.fetch(50)

    # order plus1list

您可以将
ListProperty
添加到包含
touser
fromuser
的模型中。然后,您可以执行单个查询来检索您感兴趣的实体(按日期排序)。这消除了数据存储查询和内存排序,但会在模型上花费额外的索引和稍多的存储空间

(伪)示例:

然后,您可以执行如下查询(因为如果列表中的任何元素
toandfromuser
与您要查找的值匹配,则实体将匹配):

class bla(db.Model):
    ...
    toandfromuser = db.ListProperty(...)
SELECT * FROM bla WHERE toandfromuser = common.userstats("key") ORDER BY date ASC