拥有实例的SQLAlchemy父级

时间:2018-10-07 20:47:45

标签: python flask sqlalchemy flask-sqlalchemy

我是数据库的菜鸟,所以请帮助我。我正在尝试为我的api实现文件系统。我已经有了用户和彼此相关的文件,现在我正在尝试为这些文件实现目录层次结构。我的想法是,我在数据库中添加了一个目录行,其中包含有关其父目录,子目录和其中文件的信息。我的第一种方法是执行此操作(首先不包含文件):

class Directory(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    children = db.relationship('Directory', back_populates='parent')
    parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))
    parent = db.relationship('Directory', db.back_populates='children')

这是我在阅读this教程后所想到的。但是我不认为这是正确的,也不是正确的方法。

欢迎提出有关实现此方法的任何想法:)

1 个答案:

答案 0 :(得分:0)

非常感谢@Fiansolution。我将在此处发布针对我的案例的答案:

class Directory(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    parent_id = db.Column(db.Integer, db.ForeignKey('directory.id'))
    children = db.relationship('Directory',
                backref=db.backref('parent', remote_side=[id])
            )
    files = db.relationship('File', backref='dir', lazy='dynamic')

class File(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    dir_id = db.Column(db.Integer, db.ForeignKey('directory.id'))

如果链接无效,则称为Adjacency List Relationships