SQLAlchemy - Отображение самосправочных отношений как одно многим (декларативная форма)

Я хочу отобразить объект Тега с помощью декларативного метода с SQLAlchemy. Тег может иметь родителя (другой Тег).

Я имею:

class Tag(Base):
    __tablename__ = 'tag'

    id = Column(Integer, primary_key=True)
    label = Column(String)

    def __init__(self, label, parentTag=None):
        self.label = label

Как я могу добавить "родительские" отношения?

37
задан Zoe 30 April 2019 в 20:45
поделиться

2 ответа

Вы добавляете ForeignKey, ссылающийся на родителя, а затем создаете отношение, определяющее направление через remote_side. Это документировано в разделе adjacency list relationships. Для декларативного варианта вы сделаете примерно следующее:

class Tag(Base):
    __tablename__ = 'tag'

    id = Column(Integer, primary_key=True)
    label = Column(String)
    parent_id = Column(Integer, ForeignKey('tag.id'))

    parent = relationship('Tag', remote_side=[id])

Если вам нужно и обратное отношение, добавьте backref='children' к определению отношения.

69
ответ дан 27 November 2019 в 04:33
поделиться
1
ответ дан 27 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: