我是python(sqlalchemy)的新手,我正在学习用pylons和sqlalchemy构建网站。
当我宣布模型之间的关系时,我遇到了问题。我试了好几个小时,但都失败了。但我认为这应该是一个基本问题。
我有两个类:用户和文章,用户可以创建文章,并修改其他人的文章(如维基)。 因此,用户创建了文章和编辑文章。
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
但是显示错误:
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.
我尝试将primaryjoin
添加到该行('有错误'),但不知道它应该是什么。我尝试了一些代码,但都没有。
提前谢谢!
答案 0 :(得分:2)
Article类有两个对User,user_id和editor_id的引用,因此SQLA不知道它们中的哪一个用于您的关系。只需使用显式的primaryjoin:
user = relation('User', backref='articles', primaryjoin="Article.user_id==User.id")