[英]Flask sqlalchemy - many to many relationship - filtering on children level
我對孩子的過濾器不起作用。 我不確定這是以錯誤的方式完成的。
country.py
product_country = Table('product_country', Base.metadata,
Column('product_id', Integer, ForeignKey('product.id'), primary_key=True),
Column('country_id', Integer, ForeignKey('country.id'), primary_key=True)
)
class Country(Base):
__tablename__="country"
id = Column(Integer, primary_key=True)
name = Column(String(200))
products = relationship(Product, secondary=product_country, backref='countries')
product.py
class Product(Base):
__tablename__="product"
id = Column(Integer, primary_key=True)
color = Column(Integer)
....
然后sqlalchemy搜索:
country = s.query(Country).join(Country.products).filter(Country.id==1).filter(Product.color==1).first()
好吧,我得到了id = 1的國家/地區,但我想要的是什么,但是在country.products列表中,我期望只有color = 1的產品,但是所有產品都分配給了country。 請你幫我一下。 謝謝
那是個誤會。 有充分的理由,關系加載與查詢是分開的。 換句話說,您使用過的聯接並不急於加載關系。 您可以指示查詢它包含一個contains_eager()
的預先加載的連接,並閱讀“為了加入一個實例的禪宗加載”以理解,並閱讀“使用contains_eager()加載自定義過濾的收集結果”作為示例。做你想做的。 在您的情況下,只需添加
options(contains_eager(Country.products))
您的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.