SQLAlchemy で自己参照関係を作成しようとしています。
私は、まったく同じであるが異なるカバー画像属性を持つ同一の「問題」兄弟を持つ可能性のあるクラス「問題」を持っています。
各モデルには、兄弟のリストを含む属性を含めたいと思いますが、可能であればそれ自体は含めないようにします。
私の問題モデルは現在次のようになっています。
class Issue(db.Model):
__tablename__ = 'issues'
# IDs
id = db.Column(db.Integer, primary_key=True)
title_id = db.Column(db.Integer, db.ForeignKey('titles.id'))
publisher_id = db.Column(db.Integer, db.ForeignKey('publishers.id'))
parent_id = db.Column(db.Integer, db.ForeignKey('issues.id'))
# Attributes
product_id = db.Column(db.String(100))
issue_number = db.Column(db.Float)
.......
# Relationships
is_parent = db.Column(db.Boolean(), default=False)
alternates = db.relationship('Issue',
backref=db.backref('parent', remote_side=[id])
)
各課題には、その課題が「ベース」課題であると判断されたときに設定する「is_parent」属性があります。ただし、すべての兄弟が相互にアクセスできるようにしたいと考えています。
現在、私は「親」問題にそのすべての「子」/「兄弟」との関係を与えています。
この問題は、「兄弟」のインスタンスと対話しているときに発生します。すべての親族に直接アクセスしたいのですが、最初に親を経由する必要があります。
どんな助けでも大歓迎です!
編集:基本的に、自己参照型の多対多の関係を作成したいと思います。これが追求すべき正しい方向であると信じるのは間違っていますか?