【发布时间】:2019-08-28 09:43:00
【问题描述】:
我正在构建一个项目清单应用程序,其中项目通过某种主项目链接在一起。一个主项目有几个不同的项目。我希望能够从每个项目中访问相应的主项目。一个项目只能链接到一个主项目。
该应用程序是使用 Flask 和 SQLAlchemy 以及 Python 3.6.5 构建的。我已经尝试了几个back_ref 和back_populates 技巧,但我总是得到这个错误:
sqlalchemy.exc.ArgumentError: Error creating backref 'projects' on relationship 'MasterProject.reseller_project': property of that name exists on mapper 'Mapper|Project|projects'
我发现了有关此主题的其他几篇帖子,但backrefs 总是指代不同的名称。如果可能的话,我希望有相同的名字。
这是我的代码:
class Project(db.Model):
__tablename__ = 'projects'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
class MasterProject(db.Model):
__tablename__ = 'master_projects'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
manufacturer_pid = db.Column(db.Integer, db.ForeignKey('projects.id'))
reseller_pid = db.Column(db.Integer, db.ForeignKey('projects.id'))
distributor_pid = db.Column(db.Integer, db.ForeignKey('projects.id'))
influencer_pid = db.Column(db.Integer, db.ForeignKey('projects.id'))
manufacturer_project = db.relationship('Project', foreign_keys=[manufacturer_pid],
backref='master_project')
reseller_project = db.relationship('Project', foreign_keys=[reseller_pid],
backref='master_project')
distributor_project = db.relationship('Project', foreign_keys=[distributor_pid],
backref='master_project')
influencer_project = db.relationship('Project', foreign_keys=[influencer_pid],
backref='master_project')
我想要以下内容:假设p1 是一个项目。我希望能够访问p1.master_project,无论p1 在其主项目中是什么。
【问题讨论】:
标签: python-3.x sqlalchemy flask-sqlalchemy