我正在开发一个用户结构,其中用户可以拥有由用户对象组成的父项和子项。我一直试图在SQLAlchemy和Flask中以多种不同的方式使用以下内容。
以下是我想要如何构建它的示例:
UserTable
id | name
---+-----
1 | Kim
2 | Tammy
3 | John
4 | Casey
5 | Kyle
UserRelationship
id | parent_user_id | child_user_id
---+----------------+---------------
1 | 1 | 2
2 | 1 | 3
3 | 4 | 2
Kim是Tammy和John的父母。凯西是塔米的父母。 Tammy是Kim和Casey的孩子。约翰是金的孩子。凯尔没有孩子也没有父母。
我的错误是:
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition
between parent/child tables on relationship User.parents - there are multiple
foreign key paths linking the tables via secondary table 'user_relationship'.
Specify the 'foreign_keys' argument, providing a list of those columns which
should be counted as containing a foreign key reference from the secondary
table to each of the parent and child tables.
我的model.py
文件如下:
user_relationship = db.Table(
'user_relationship',
db.Model.metadata,
db.Column('child_user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('parent_user_id', db.Integer, db.ForeignKey('user.id'))
)
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, unique=True, nullable=False)
email = db.Column(db.String(120), unique=True)
pwdhash = db.Column(db.String(54))
parents = relationship('User',
secondary=user_relationship,
backref=db.backref('children'),
cascade="all,delete")
这可能不是在Flask或SQLAlchemy中处理多对多层次用户关系的最佳方法。任何关于如何构建它的见解都会很棒。
谢谢