【问题标题】:SQLAlchemy parent to own instance拥有实例的 SQLAlchemy 父级
【发布时间】:2018-10-07 20:47:44
【问题描述】:

我是数据库方面的菜鸟,所以请帮助我。我正在尝试为我的 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 教程后想到的。但我不认为这是正确的,也不是正确的方法。

欢迎任何关于如何实现这一点的想法:)

【问题讨论】:

标签: python flask sqlalchemy flask-sqlalchemy


【解决方案1】:

非常感谢@Fian 提供solution。我将在这里发布我的案例的答案:

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

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 2022-10-29
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多