SQLAlchemy родитель для собственного экземпляра - PullRequest
0 голосов
/ 07 октября 2018

Я новичок в базах данных, поэтому, пожалуйста, помогите мне.Я пытаюсь реализовать файловую систему для моего 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')

Это то, о чем я думал после прочтения этого учебника.Но я не думаю, что это правильно или что это правильный подход.

Любые идеи о том, как реализовать это, приветствуются:)

1 Ответ

0 голосов
/ 08 октября 2018

Большое спасибо @ Fian за решение .Я собираюсь опубликовать ответ для моего случая здесь:

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

...