我有一个问候模型
class Greeting(ndb.Model):
author = ndb.StructuredProperty(Author)
content = ndb.TextProperty(indexed=False)
avatar = ndb.BlobProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
public = ndb.BooleanProperty(default=False)
其中我使用以下代码在Python Google App Engine的每个页面查询七个问候语:
posts_query = Greeting.query(
ancestor=session_key(session_name)).order(-Greeting.date)
curs = Cursor(urlsafe=self.request.get('cursor'))
posts,next_curs, more = posts_query.fetch_page(7, start_cursor=curs)
我希望它只显示已公开修改为True的帖子,因此我将其更改为
posts_query = Greeting.query(
ancestor=session_key(session_name), Greeting.public == True).order(-Greeting.date) #line changed
curs = Cursor(urlsafe=self.request.get('cursor'))
posts,next_curs, more = posts_query.fetch_page(7, start_cursor=curs)
然而,它给了我一个错误:
File "/home/ralf/Desktop/google_projects/website/views/events.py", line 28
Greeting.public == True).order(-Greeting.date)
SyntaxError: non-keyword arg after keyword arg
我该如何解决这个问题?这种查询的适当代码是什么?非常感谢帮助。
P.S。如您所见,我也在使用查询游标。
答案 0 :(得分:1)
假设您有一些复杂的查询,其中包含位置和非位置参数,并且令人困惑,您还可以将其拆分为两行:
posts_query = Greeting.query(ancestor=session_key(session_name))
posts_query = posts_query.filter(Greeting.public == True)
这个“过滤器建筑”可以根据需要重复多次。
答案 1 :(得分:-1)
我使用此
修复了它posts_query = Greeting.query(Greeting.public == True).order(-Greeting.date)
而不是
posts_query = Greeting.query(ancestor=session_key(session_name),
Greeting.public == True).order(-Greeting.date)
是的,在查询函数中颠倒ancestor=session_key(session_name)
和Greeting.public == True
的顺序可以消除错误。但是,我发现我的答案是一个很好的解决方案,因为它是我在网站上添加的功能的一部分。
ancestor=session_key(session_name)
。他们只是查看页面而根本没有登录。