我在GitHub上建模存储库。每个Repo可以有一组叉子,其中Repo将是其中的一个。
我的部分模型文件如下所示:
class Repo(Base):
__tablename__ = "repos"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text, unique=True)
parent_id = db.Column(Integer,db.ForeignKey('repos.id'))
parent = db.relationship("Repo")
我无法理解如何正确地建立这种关系。
答案 0 :(得分:2)
您可以使用remote_side指令
class Repo(Base):
__tablename__ = "repos"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text, unique=True)
parent_id = db.Column(Integer,db.ForeignKey('repos.id'))
forks = relationship("Repo",
backref=backref('parent', remote_side=[id])
)
答案 1 :(得分:1)
也许这样的事情可行吗?
class Repo(Base):
__tablename__ = "repos"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text, unique=True)
class Fork(Repo):
__tablename__ = "forks"
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(Integer,db.ForeignKey('repos.id'))
parent = db.relationship("Repo")
继承Repo类,以便Fork共享与Repo相同的所有属性。另外,我们在Fork中添加了一个关系,它设置它不是一个根存储库,并且与一些以前分叉的repo相关联