J'essaie de définir un modèle SQLAlchemy/Elixer qui peut décrire la relation suivante. J'ai une table SSP, qui a plusieurs clés étrangères à la table POC. J'ai défini les relations ManyToOne correctement dans l'objet SSP (ce qui me permet de SSP.get(1).action.first_name
correctement). Ce que je voudrais également ajouter est l'autre côté de cette relation, où je peux effectuer quelque chose comme POC.get(1).csa
et retourner une liste d'objets SSP dans lequel ce POC est défini comme idPOCCSA.Python SQLAlchemy/Elixer Question
Je sais que ce serait mieux pour une association polymorphique mais je ne peux pas du tout changer le schéma DB (créer une nouvelle table poc2ssp avec une colonne pour type
d'association).
class POC(Entity):
using_options(tablename = 'poc', autoload = True)
# These two line visually display my "issue":
# csa = OneToMany('SSP')
# action = OneToMany('SSP')
class SSP(Entity):
'''
Many to One Relationships:
- csa: ssp.idPOCCSA = poc.id
- action: ssp.idPOCAction = poc.id
- super: ssp.idSuper = poc.id
'''
using_options(tablename = 'spp', autoload = True)
csa = ManyToOne('POC', colname = 'idPOCCSA')
action = ManyToOne('POC', colname = 'idPOCAction')
super = ManyToOne('POC', colname = 'idPOCSuper')
Toutes les idées pour y parvenir? La FAQ Elixer a un bon exemple en utilisant les paramètres primaryjoin et foreign_keys mais je ne les trouve pas dans la documentation. J'espérais que OneToMany() ne supporte qu'un paramètre de nom de col comme ManyToOne(). Quelque chose d'un peu moins verbeux.
fonctionne parfaitement, j'utilisais inverse avec une relation OneToOne(), ne pense pas à l'appliquer à la OneToMany(). –