0

Taggable Mixinにあるトランザクションの例を模倣していますが、同じように動作していません。この例ではdb.run_in_transactionは何かを返しますか?

def txn(): 
    // statements omitted for brevity 
    blog_index.put() 
    new_post = Post(key_name=new_post_key_name, parent=blog_index, 
          index = new_index, title = new_title, 
          body = new_body) 
    new_post.put() 
    return new_post 

def new_post(cls, new_title=None, new_body=None, new_tags=[]): 
    new_post = db.run_in_transaction(txn) 

    new_post.tags = new_tags 
    new_post.put() 

txnからnew_postdb.run_in_transactionを通じて返され、その後、何かがそれを行うことができます。しかし、私は取得しています:これは、関数run_in_transactionnew_post変数に割り当てられてきていると信じて私をリード

TypeError: object is not callable 

ではなく、実際のnew_posttxnから返されました。

db.run_in_transactionは、呼び出し可能な関数の値のようなものを返しますか?

+1

run_in_transactionは、トランザクション関数が返す値を返します。 (http://code.google.com/appengine/docs/python/datastore/functions.html#run_in_transaction)バグの発見に役立つコードを追加する必要があります。 –

答えて

2

run_in_transactionは、呼び出された関数が何を返したかを返します。 compelte stacktraceと元のコードを含める必要があります。

+0

ありがとう、ニック。これは私の間違いでした。 「要約」セクションのステートメントの1つに、トランザクションを使用した第三者図書館への呼び出しが含まれていました。そのために、私は誤ってtxnにparamを追加し、それを間違って呼び出しました。 –

関連する問題