0

私は、PythonはGoogle Appエンジンの各ページで7つのグリーティングポストを照会するには、次のコードを使用することを特徴とする請求私はグリーティングモデルクエリNDBのPythonのbooleanプロパティ

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) 

を持っている:

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) 

I投稿を公開して真に変更して投稿したいので、それを変更しました

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.ご覧のとおり、私はクエリカーソルも使用しています。

+2

問題は必ずしもApp Engineに関連しているかどうかはわかりません。 Pythonでは、キーワード引数の後に非キーワード引数(定位置)を指定することはできません。あなたはキーワード引数 "ancestor = session_key(session_name)"の後ろに "Greeting.content ==" test8 ""という定位置引数を持っているので、それは有効なpythonではありません。 – dyeray

+0

@dyeray申し訳ありませんが、私は私の質問を編集するつもりです。これは現在表示されているエラーラインではありません。 –

+0

@dyerayそれが更新されました。 :) –

答えて

-1

私の代わりに

posts_query = Greeting.query(ancestor=session_key(session_name), 
     Greeting.public == True).order(-Greeting.date) 

のこの

posts_query = Greeting.query(Greeting.public == True).order(-Greeting.date) 

を使用してそれを修正はい、クエリ機能でancestor=session_key(session_name)Greeting.public == Trueの順序を逆にすると、エラーを除去します。しかし、私は自分のウェブサイトに追加した機能の一部であることを考慮して、私の答えが良い修正であることを発見しました。

ancestor=session_key(session_name)は、このアプリの一般ユーザーにはまったく必要ありません。彼らはページを見るだけで、全くログインしません。

posts_query = Greeting.query(ancestor=session_key(session_name)) 
posts_query = posts_query.filter(Greeting.public == True) 

この「フィルタ建物は」何回も繰り返すことができます。

0

あなたは、位置と非位置引数といくつかの複雑なクエリを持っていたと仮定し、それが混乱になった、あなたも2行に分割することができます必要に応じて。

関連する問題