加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Flask-SQLAlchemy查询多对多

发布时间:2020-12-16 21:47:23 所属栏目:Python 来源:网络整理
导读:我在类别和产品之间有多对多的关系,如下所示: category_product = db.Table('category_product',db.Column('category_id',db.Integer,db.ForeignKey('category.id')),db.Column('product_id',db.ForeignKey('product.id')))class Product(db.Model): """ SQ

我在类别和产品之间有多对多的关系,如下所示:

category_product = db.Table('category_product',db.Column('category_id',db.Integer,db.ForeignKey('category.id')),db.Column('product_id',db.ForeignKey('product.id')))


class Product(db.Model):
    """ SQLAlchemy Product Model """
    id = db.Column(db.Integer,primary_key=True)
    sku = db.Column(db.String(10),unique=True,nullable=False)
    name = db.Column(db.String(80),nullable=False)
    categories = db.relationship('Category',secondary=category_product,backref=db.backref('categories',lazy='dynamic'))

    def __init__(self,name):
        self.name = name

    def __repr__(self):
        return '

我试图获取由category_id指定的给定类别中的所有Product对象:

products = db.session.query(Category).
        filter_by(id=category_id).
        products.
        all()

但是,我得到以下异常:

AttributeError: 'Query' object has no attribute 'products'

我可能错过了一些简单的东西.

最佳答案
您不能使用属性名称“products”跟随filter_by.首先需要使用all()或first()来捕获结果.此外,由于您使用的是Flask-SQLAlchemy,我建议不要使用db.session.query(Category)而是使用Category.query.所以改变这个

products = db.session.query(Category).
    filter_by(id=category_id).
    products.
    all()

all_products = Category.query.
    filter_by(id=category_id).
    first().
    products

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读