我有一个日志表,其中包含有关员工 ex 的各种信息:
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 个。
有没有办法用超过 2 张桌子做多对多?
还是有另一种方法来完成我想做的事情?
任何帮助表示赞赏。