SQLAlchemy - модель из / в отношения - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь смоделировать диаграмму ER ниже в SQLAlchemy для создания прототипа функциональности рабочего процесса.

«Компонент» состоит из набора «action», связанного вместе с «action_link». Действие можетиметь действия «от 0 до N» до и «от 0 до N» после, поэтому добавление дополнительных атрибутов для предыдущего / следующего шага не поможет (это причина для таблицы «action_link». Тип действия такжеважно, так как он решит, какие действия в настоящее время открыты для выполнения.

ER Model

У меня нет проблем при создании действия, компонента и типов:

class Component(Base):
    __tablename__ = 'wkf_component_def'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), nullable=False)


class Action(Base):
    __tablename__ = 'wkf_action_def'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), nullable=False)
    event = Column(String(128), nullable=False)

class Type(Base):
    __tablename__ = 'wfk_type'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), nullable=False)

Но я борюсь с "action_link", я не могу просто создать "таблицу связей", так как у меня есть хотя бы один дополнительный столбец "type_id", поэтому мне нужен объект ассоциации (или прокси)

class ComponentLink(Base):
    id = Column(Integer, primary_key=True, autoincrement=True)
    component_id = Column(Integer, ForeignKey('wkf_component_def.id'))
    from_action_id = Column(Integer, ForeignKey('wkf_action_def.id'))
    to_action_id = Column(Integer, ForeignKey('wkf_action_def.id'))
    type_id = Column(Integer, ForeignKey('wfk_type.id'))

Но я борюсь с утверждениями realtionship / backref, которые отсутствуют выше, мне не удалось заставить отношения работать так, как ожидалось (я так и не смог добавить "действие"_link "объект, а затем передайте его

Если мой подход к решению этой общей ошибки неверен, пожалуйста, дайте мне знать и укажите мне правильное направление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...