python - 如何在 sqlalchemy 中使用带有多个连接路径的 backref
问题描述
我的目标是列出所有具有特定功能的用户user_type
以及角色组模型中附加到用户的角色列表
class Rolegroup(Base):
__tablename__ = "rolegroup"
__table_args__ = {'comment': 'rgp'}
id=Column(Integer, primary_key=True, index=True)
group_id=Column(Integer, ForeignKey("group.id"))
user_id=Column(UUID(as_uuid=True), ForeignKey("users.id"), index=True)
created_by_id=Column(UUID(as_uuid=True), ForeignKey("users.id"))
updated_by_id=Column(UUID(as_uuid=True), ForeignKey("users.id"))
created_date=Column(DateTime, default=datetime.now)
updated_date=Column(DateTime, onupdate=datetime.now)
deleted=Column(Boolean, default=False)
updated_by=relationship("User", foreign_keys=[updated_by_id])
users_role=relationship("User", foreign_keys=[user_id])
class User(Base):
__tablename__="users"
id = Column(UUID(as_uuid=True),default=uuid.uuid4, primary_key=True, index=True)
first_name = Column(String)
last_name = Column(String)
username = Column(String, index=True, nullable=False) #username is email
password = Column(String, nullable=False)
is_active = Column(Boolean(), default=False)
is_superuser = Column(Boolean(), default=False)
created = Column(DateTime(), default=datetime.now)
mobile = Column(String(15))
user_type_id = Column(Integer, ForeignKey("user_type.id"))
verify_code=Column(String(100))
profile_completed=Column(Boolean, default=False )
profile_approved=Column(Boolean, default=False)
user_type_name= relationship("UserType",backref="users")
userrole= relationship("Rolegroup", backref="userrole")
当我尝试对其执行任何查询时 - 它显示以下错误:
sqlalchemy.exc.AmbiguousForeignKeysError:无法确定关系 User.userrole 上的父/子表之间的连接条件 - 有多个外键路径链接表。指定“foreign_keys”参数,提供那些列的列表,这些列应该被视为包含对父表的外键引用
当没有额外的 user.id 作为 foreignKey 关系时,它工作得很好。我已经尝试删除角色组模型中的额外字段并且效果很好
解决方案
推荐阅读
- google-cloud-platform - 如何将一个 BigQuery 表复制到另一个区域的现有数据集?
- node.js - 使用异步函数时如何按顺序处理事件
- html - 如何摆脱 CSS 中的双垂直滚动条?
- react-admin - React Admin:如何修复 Create 中的无休止加载
- python - 在 PyCharm 中键入关于 Django HttpRequest GET 参数检索的警告
- iframe - 管理 LTI 中的内容
- jenkins - Jenkins 服务问题与应用程序交互
- ios - 在 Swift 中的 UIView 上将约束与可变高度和固定高度相结合
- sublimetext4 - 我可以在 Sublime Text 中禁用代码建议吗?
- python - 在 Python 中使用 numpy 对矩阵进行转置