2017-01-09 23 views
0

ユーザーが作成されたときに2つのフォルダ=>home_foldertrash_folderというユーザーがあります。各フォルダーには作成者(ユーザー)があります。継承+外部キー:idsがありません

フォルダは結合継承を通じたエントリです(問題ではないかもしれません)。私はこれをやっている

new_user = User(name=name) 

home_folder = Folder(name="Home", 
        folder_type=Folder.FolderType.home, 
        creator=new_user) 

trash_folder = Folder(name="Trash", 
         folder_type=Folder.FolderType.trash, 
         creator=new_user) 

session.add(home_folder) 
session.add(trash_folder) 
session.add(new_user) 
session.commit() 

私が正しく私のフォルダを取得:

id folder_type creator_id 
1 home  1 
2 trash  1 

しかし、私のユーザーがOKではありません。ここで

id name home_folder_id trash_folder_id 
1 Remi <null>   <null> 

は私の要旨コードです: https://gist.github.com/remimarenco/3a9919d58a1b5987cdced1fff62cc606

EDIT:

実際、私の質問はちょっとのようでした... "どのように私は魔法にもっと魔法を加​​えるのですか?"私のhome_folderと私のtrash_folderは私のユーザには設定されていません。なぜなら私はそれらを特別に設定する場所がないからです。

は、私がリンクする方法があるかどうかを知るために幸せになる

...ユーザーが作成され、フォルダがあまりにも作成しているので、私は、.flush().commit()後にこれらのaffectationsをしなければならないと思います私たちが作成しているフォルダはユーザのhome_folderに関連付けられていると言っているように、それらをオンザフライで表示します。

ありがとうございます!

答えて

0

フォルダを作成してユーザーに名前を追加したようですが、そのユーザーをホーム/ごみ箱フォルダに関連付けていないようです。 3つのオブジェクトをすべて作成した後でも、それらをリンクする必要があります。例:

session.add(home_folder) # Home folder is created 
session.add(trash_folder) # Trash folder is created 
session.add(new_user)  # New User is Created 

new_user.home_folder = home_folder # Give the New User a Home Folder 
new_user.trash_folder = trash_folder # Give the New User a Trash Folder 

session.commit() 
+0

こんにちはDavid! 私を助ける時間をとってくれてありがとう。私は、ユーザーにフォルダを追加することで回避しようとしましたが、私はこれらの愛情をする必要はないはずの関係に 'backref'を使用しているためだと思います。 私は念のために、試みたが、私はこの引き起こした: 'sqlalchemy.exc.CircularDependencyError: detected.'循環依存が起こっている何だと思いますか? –

関連する問題