【发布时间】:2021-06-25 08:10:13
【问题描述】:
我有类似下面的查询
query = db.session.query(Attribute)
.select_from(Product)
.filter_by(category_id=some_id)
.join(Attribute)
返回:
[(<Product 1>, <Attribute 1>),
(<Product 1>, <Attribute 3>), #two attributes for Product 1
(<Product 2>, <Attribute 2>),
(<Product 2>, <Attribute 5>), #two attributes for Product 2
...]
我需要一个查询来保留至少一个属性匹配某些type 和value 值的所有产品。在上面的示例中,如果 <Attribute 1> 是唯一满足这些条件的属性,则结果应该是:
[(<Product 1>, <Attribute 1>), #Attribute1 met the conditions
(<Product 1>, <Attribute 3>)] #Other Product1 rows are thus kept
编辑:产品和属性有多对多的关系,这里是模型:
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
sku = db.Column(db.String(10), unique=True, nullable=False)
category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=False)
category = db.relationship('Category', backref=db.backref('products', lazy=True))
class ProductAttribute(db.Model):
product_id = db.Column(db.Integer, db.ForeignKey('product.id'), primary_key=True)
attribute_id = db.Column(db.Integer, db.ForeignKey('attribute.id'), primary_key
class Attribute(db.Model):
id = db.Column(db.Integer, primary_key=True)
type = db.String(db.String(40))
value = db.String(db.String(40))
【问题讨论】:
-
能否提供
Attribute和Product的模型定义以帮助您查询? -
谢谢@van,我编辑了这个问题。请让我知道这是否有意义!
标签: python sqlalchemy orm