私はSqlalchemyで何かできるかどうか、あるいは間違った方法を考えているかどうかを理解しようとしています。Pythonのsqlalchemyの動的関係
class Customer(db.Model):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
name = Column(String)
addresses = relationship('Address')
class Address(db.Model):
__tablename__ = 'address'
if = Column(Integer, primary_key=True)
address = Column(String)
home = Column(Boolean)
customer_id = Column(Integer, ForeignKey('customer.id'))
以降、私は顧客とちょうど彼らのホームアドレスを取得するクエリを実行します:例として、私は2つ(これらは一例です)のクラスを持っていると言います。
db.session.query(Customer).join(Address, Address.home == True)
以上の更なる結果は、唯一のホームアドレスを取得しますので、参加を制限/絞り込むでしょう:それはこのようなものであることを行うことは可能ですか?事前に
おかげで、 ダグ
感謝を使用することができます。代わりに、custom join conditionをお客様に一対一の関係に新しいものを追加する必要があります。私は私の質問についてより明確にすべきだった、2つのクラスは私が問題を説明するために使用している単なる例です。この例のクラスは、1対2の関係をモデル化し、ForeignKeyは結合を指定します。顧客を獲得する簡単なクエリを実行する場合、住所関係コレクションにはその顧客のすべての住所も含まれます。しかし、私が望むのは、顧客を取得するために照会することができるように結合基準をオーバーライドまたは追加することですが、リレーションシップ・コレクションには1つのエレメント、つまりホーム・アドレスしかありません。 –