Je suis nouveau sur python (sqlalchemy), et j'apprends à construire un site web avec pylons et sqlalchemy.Comment déclarer un-à-plusieurs s'il y a 2 champs pour une même clé étrangère
J'ai un problème lorsque je déclare la relation entre les modèles. Je l'ai essayé plusieurs heures, mais j'ai échoué. Mais je pense que cela devrait être une question fondamentale.
J'ai deux classes: Utilisateur et Article, l'utilisateur peut créer des articles, et modifié l'article des autres personnes (comme wiki). Ainsi, un utilisateur a créé des articles et des articles édités.
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True)
title = ...
user_id = Column(Integer, ForeignKey('users.id'))
editor_id = Column(Integer, ForeignKey('users.id'))
# relations
user = relationship('User', backref='articles') # -> has error
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String(20))
def __init__(self):
pass
Mais il y a une erreur affichée:
InvalidRequestError: One or more mappers failed to compile. Exception was probably suppressed within a hasattr() call. Message was: Could not determine join condition between parent/child tables on relationship Article.user. Specify a 'primaryjoin' expression. If this is a many-to-many relationship, 'secondaryjoin' is needed as well.
J'ai essayé d'ajouter primaryjoin
à la ligne (« erreur a »), mais ne sais pas ce qu'elle devrait être. J'ai essayé quelques codes, mais aucun ne fonctionne.
Merci d'avance!
Pouvez-vous également fournir votre classe d'utilisateur? Ou est-ce factice dans le code? –
La classe User est mise à jour et j'ai supprimé certains champs inutilisés. Il n'y a pas de déclaration de relation dans l'utilisateur, seulement quelques colonnes. Merci, Daniel – Freewind