J'ai une table pour les journaux qui contient diverses informations sur les employés ex:Comment faites-vous beaucoup à beaucoup avec plus de 2 tables?
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)
Tableaux des employés et des compétences ressembler à ceci:
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)
J'utilise actuellement Flask-AppBuilder et j'ai Skill View qui affiche tous les journaux pour la compétence sélectionnée en cours.
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'
Dans SkillLogView, je souhaite également afficher une liste de noms d'employés possédant cette compétence.
Comment puis-je également obtenir les employés à partir des journaux qui se rapportent à la compétence actuelle? Je ne suis pas sûr de savoir comment le faire, mais je pensais que ce pourrait être un cas pour plusieurs à plusieurs. Le problème est qu'il y a 3 tables, pas 2.
Existe-t-il un moyen d'en faire beaucoup avec beaucoup plus de 2 tables?
Ou y a-t-il une autre façon d'accomplir ce que je veux faire?
Toute aide appréciée.
Merci pour l'aide Ivan! En outre, j'ai posté une autre méthode qui l'implémente au niveau du modèle de table. Vérifiez quand vous avez le temps. –
Merci pour le partage. J'ai mentionné votre 'Votre employé n'a pas établi de relation avec Log ...', c'est exactement ce que préconise votre autre méthode. –