2011-06-24 14 views
1

3つの異なるレベルのオブジェクトを持つSQL Alchemy構造を構築しています。たとえば、いくつかのブログに関する情報を格納する単純なデータベースを考えてみましょう:いくつかのBlogオブジェクト、いくつかのPostオブジェクト、および一部のCommentオブジェクトがあります。各PostBlogに属し、各CommentPostに属します。 backrefを使用すると、Blogに属し、Commentにも同様に属しているすべてのPostのリストが自動的に作成されます。SQL Alchemy:孫との関係

私はskeleton for such a structureを起草しました。

今私がしたいのは、Blogに属するCommentのすべての配列を直接持っていることです。私はいくつかのアプローチを試みましたが、動作しないか、SQL Alchemyを修正できない方法で泣かせてしまいます。私は私のことがかなり頻繁に必要だと思いますが、何か助けになるものはありませんでした。

誰かが私にその方法を提案していますか?

ありがとうございました。

+0

を使用することができると思います。あなた自身がループを実行するか、ブログ実装の中で明示的な結合操作を実行する必要があります。 –

答えて

2

私はあなたがSQLでこのような関係のことを聞いたことはありませんassociation proxy

class Blog(Base): 

    comments = association_proxy('posts', 'comments') 
+0

私はもう必要があるので試しませんでしたが、ドキュメントからは明らかにアソシエーションのプロキシが必要です。ありがとう。 –

0

あなたはjoinを使用する必要があります。

comments = session.query(Comment).join(Post).filter(Post.blog == b1).all() 
+0

ありがとうございます。私は別のものを探しています:私は 'comments'を直接クラスブログのフィールドにアクセスするために、私はバックリファレンスの 'タスク'と同じ方法でアクセスします。言い換えれば、私はクエリを実行する行が欲しいわけではありませんが、私は、フィールドにアクセスするたびに実行されるクエリにクラスのいくつかのフィールドをバインドしたいと思います( 'relatioship'のように)。私は[これを実装しようとしました](http://pastebin.com/wKmYq77p)、私は理解できないエラーがあります。ライン46と77を比較してください。 –