【发布时间】:2020-06-12 19:17:29
【问题描述】:
我的 postgres 数据库有类别和产品类。一个类别可以有许多产品。我正在尝试获取属于多个类别列表的产品(full_tree 是类别 ID 的列表)。我尝试的查询似乎不起作用,因为它们总是返回数据库中的所有产品,即过滤部分似乎不起作用。
谁能帮我指出我做错了什么?或者展示执行此类查询的最佳实践?
我的课:
class Parent_product(SearchableMixin, db.Model):
__searchable__ = ['name']
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String)
manufacturer_id = db.Column(db.Integer, db.ForeignKey('manufacturer.id'))
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
class Category(db.Model, BaseNestedSets):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(400), index=True, unique=True)
products = db.relationship("Parent_product", backref='category', lazy='dynamic')
我的查询:
def products(parent_category = None):
# init query
my_query = Parent_product.query
if parent_category:
# Find selected category from db
category = Category.query.filter_by(name = parent_category).first()
# Get list of all category id's to be used in query
full_tree = []
full_tree.append(category.id)
for children in category.get_children():
full_tree.append(children.id)
# Add filter to query
my_query.filter_by(category_id = Category.id.in_(full_tree))
# Execute query, get list of products, paginate
products = my_query.paginate('PAGE', 'PRODUCTS_PER_PAGE', False)
【问题讨论】:
标签: python flask sqlalchemy flask-sqlalchemy