如何在Google App Engine中检查UserProperty的null值
query = db.GqlQuery("SELECT * FROM Entry " +
"WHERE editor IS NOT NULL" +
"ORDER BY creationdate DESC")
entries = query.fetch(5)
在Google App Engine的数据库建模中,我想问一下,怎么检查一个叫做UserProperty的属性是否为空?
比如,我有这段代码:
class Entry(db.Model):
title = db.StringProperty()
description = db.StringProperty()
author = db.UserProperty()
editor = db.UserProperty()
creationdate = db.DateTimeProperty()
当我想检查那些编辑者不为空的条目时,我不能用这种GqlQuery。
我在想有没有什么方法可以检查UserProperty这个变量是否存在?谢谢!
1 个回答
13
query = db.GqlQuery("SELECT * FROM Entry WHERE editor > :1",None)
不过,你不能在一个列上使用ORDER BY
,同时在另一个列上使用不等式条件:这是一个众所周知的GAE限制,跟这个属性是否是UserProperty没有关系,也和你在做的与None的比较无关。
编辑:我之前用的是!=,但正如@Nick指出的,任何不等于None的东西都是大于None的,而在GAE上,使用大于(>)的速度大约是使用不等于(!=)的两倍(因为不等于是通过小于(<)和大于(>)的组合来实现的),所以在这里使用大于是一个值得做的优化。