Flask SQLAlchemy список ссылок - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь создать самообращённое дерево с упорядоченными детьми, но я не могу понять, что это правильно. Это то, что мне ближе всего, но поведение очень неожиданное.

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

Я просто хочу, чтобы дерево было сделано из упорядоченных узлов с упорядочением, обработанным sql -алхимией. Спасибо!

class Node(db.Model):
  id = db.Column(db.Integer, primary_key = True)
  parent_id = db.Column(db.Integer, db.ForeignKey('node.id'))
  index = db.Column(db.Integer)
  children = db.relationship('Node', order_by = 'Node.index', collection_class = ordering_list('index'), backref='parent', remote_side = [id], uselist = True)

1 Ответ

0 голосов
/ 20 января 2020

Мне пришлось отделить дочерние и родительские атрибуты и использовать back_populates вместо backref.

Решение:

class Node(db.Model):
  id = db.Column(db.Integer, primary_key = True)
  parent_id = db.Column(db.Integer, db.ForeignKey('node.id'))
  index = db.Column(db.Integer)
  parent = db.relationship('Node', remote_side = 'Node.id', back_populates = 'children')
  children = db.relationship('Node', order_by = 'Node.index', collection_class = ordering_list('index'), back_populates = 'parent')
...