2017-01-09 120 views
0

我有一個用戶,它在創建時有兩個文件夾=>home_foldertrash_folder。每個文件夾都有一個創建者(用戶)。繼承+外鍵:缺失ID

文件夾是通過連接繼承的條目(在我的問題中可能沒有關係)。

當我這樣做:

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 

但是我的用戶是不正常:

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

這裏是我的要點代碼: https://gist.github.com/remimarenco/3a9919d58a1b5987cdced1fff62cc606

編輯:

所以,其實我的問題有點像......「我怎麼給魔法添加更多魔法?」。這是有道理的我的home_folder和我的垃圾文件夾沒有填充在我的用戶,因爲沒有地方我專門設置它們。

我想我有一個.flush().commit()後做這些矯揉造作,所以在創建用戶和文件夾中創建太...

我會很高興地知道,如果有鏈接的方式他們在飛行中,就像說我們正在創建的文件夾與用戶的home_folder關聯。

謝謝!

回答

0

看起來您已創建文件夾並添加了用戶名稱,但您並未將用戶關聯到家庭/垃圾箱文件夾。在創建所有三個對象後,仍然需要鏈接它們。例如:

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

大衛嗨! 感謝您抽出時間幫助我。我試圖通過向用戶添加文件夾來解決問題,但是,我認爲,因爲我正在使用'backref'作爲關係,所以我不應該做這些感情。 我試過了,爲了以防萬一,我有這樣的觸發: 'sqlalchemy.exc.CircularDependencyError:detected.' 你認爲是發生循環依賴? –