继承+外键:缺少ID

时间:2017-01-09 23:11:26

标签: python sqlalchemy

我有一个用户,创建时有两个文件夹=> home_foldertrash_folder。每个文件夹都有一个创建者(用户)。

文件夹是通过加入继承的条目(在我的问题中可能无关紧要)。

当我这样做时:

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和我的trash_folder没有在我的用户中填充,因为我没有专门设置它们的地方。

我想我必须在.flush().commit()之后执行这些操作,因此创建了用户并创建了文件夹......

我很高兴知道是否有办法即时链接它们,比如说我们正在创建的文件夹与用户的home_folder相关联。

谢谢!

1 个答案:

答案 0 :(得分:0)

您好像已经创建了文件夹并为用户添加了他/她的名字,但您还没有将用户关联到Home / Trash文件夹。创建所有三个对象后,仍然需要链接它们。例如:

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()