У меня есть таблица для журналов, которая содержит различную информацию о сотрудниках, например:
class Log(Model):
division_id = Column(Integer, ForeignKey('division.id'), nullable=False)
division = relationship("Division")
employee_id = Column(Integer, ForeignKey("employee.id"), nullable=False)
employee = relationship("Employee")
skill_id = Column(Integer, ForeignKey("skill.id"), nullable=False)
skill = relationship("Skill")
message = Column(String, default='OK', nullable=False)
date = Column(DateTime, default=NowTime(), nullable=True)
Таблицы сотрудников и навыков выглядят следующим образом:
class Employee(Model):
id = Column(Integer, primary_key=True)
name = Column(String, unique=True, nullable=False)
division_id = Column(Integer, ForeignKey('division.id'), nullable=False)
division = relationship("Division")
class Skill(Model):
id = Column(Integer, primary_key=True)
name = Column(String, unique=True, nullable=False)
В настоящее время я использую Flask-Appbuilder, и у меня есть представление навыков, в котором отображаются все журналы для текущего выбранного навыка.
class LogView(ModelView):
datamodel = SQLAInterface(Log)
list_columns = ['division', 'employee', 'skill', 'message', 'date']
show_template = 'appbuilder/general/model/show_cascade.html'
class SkillLogView(ModelView):
datamodel = SQLAInterface(Skill)
list_columns = ['name']
related_views = [LogView]
show_template = 'appbuilder/general/model/show_cascade.html'
В SkillLogView я также хочу отобразить список имен сотрудников, у которых есть этот навык.
Как мне также получить сотрудников из журналов, которые относятся к текущему навыку?
Я не уверен, как это сделать, но я думал, что это может быть случай для многих ко многим. Проблема в том, что там 3 таблицы, а не 2.
Есть ли способ сделать многие ко многим с более чем двумя таблицами?
Или есть другой способ выполнить то, что я хочу сделать?
Любая помощь приветствуется.