Flask-SQLAlchemy查询多对多

马克·里奇曼

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

category_product = db.Table('category_product',
                            db.Column('category_id',
                                      db.Integer,
                                      db.ForeignKey('category.id')),
                            db.Column('product_id',
                                      db.Integer,
                                      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 '<Product {}>'.format(self.name)


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

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

    def __repr__(self):
        return '<Category {}>'.format(self.name)

我试图得到Product给定的所有对象Category,由指定category_id

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

但是,我得到以下异常:

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

我可能缺少一些简单的东西。

Codegeek

您不能在filter_by后面加上属性名称“ products”。您首先需要使用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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

来自分类Dev

Flask-Sqlalchemy 3种多对多关系

来自分类Dev

设置多对多sqlalchemy flask app sqlite db的插入顺序

来自分类Dev

用Flask-SQLAlchemy查询

来自分类Dev

Flask-SQLAlchemy多对多

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

Flask-SQLAlchemy查询带有多个必需标签的多对多标签

来自分类Dev

Flask-appbuilder多对多关系sqlalchemy.exc.NoReferencedTableError错误

来自分类Dev

如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

来自分类Dev

通过Flask显示好友名称多对多sqlalchemy

来自分类Dev

使用Flask-SQLAlchemy选择多对多

来自分类Dev

我应该使用flask sqlalchemy多对多关系吗?

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

Flask SQLAlchemy多对多删除元素

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

Flask-SQLAlchemy筛选与父模型的多对多关系

来自分类Dev

如何在Flask SQL Alchemy中查询一对多/多对多关系?

来自分类Dev

Flask-SQLAlchemy更新一对多记录

来自分类Dev

如何使用flask-sqlalchemy多次插入多对多关系?

来自分类Dev

sqlalchemy中的多对多查询

来自分类Dev

使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

来自分类Dev

使用Flask-SQLAlchemy进行多对多查询

来自分类Dev

Jsonify flask-sqlalchemy烧瓶中的多对一关系

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

Flask SQLalchemy-多对多-显示带有所有标签的照片(或包含所有帖子的博客等)

来自分类Dev

在Flask sqlalchemy中订购一对多模型?

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

Flask-SQLAlchemy多对多插入

Related 相关文章

  1. 1

    使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

  2. 2

    Flask-Sqlalchemy 3种多对多关系

  3. 3

    设置多对多sqlalchemy flask app sqlite db的插入顺序

  4. 4

    用Flask-SQLAlchemy查询

  5. 5

    Flask-SQLAlchemy多对多

  6. 6

    Jsonify Flask-SQLAlchemy Flask中的多对一关系

  7. 7

    Flask-SQLAlchemy查询带有多个必需标签的多对多标签

  8. 8

    Flask-appbuilder多对多关系sqlalchemy.exc.NoReferencedTableError错误

  9. 9

    如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

  10. 10

    通过Flask显示好友名称多对多sqlalchemy

  11. 11

    使用Flask-SQLAlchemy选择多对多

  12. 12

    我应该使用flask sqlalchemy多对多关系吗?

  13. 13

    Flask-Sqlalchemy,多对多关系中的辅助表的主键

  14. 14

    Flask SQLAlchemy多对多删除元素

  15. 15

    SqlAlchemy(Postgres + Flask):如何求和多列?

  16. 16

    SQLAlchemy + Flask多对一关系

  17. 17

    Flask-SQLAlchemy筛选与父模型的多对多关系

  18. 18

    如何在Flask SQL Alchemy中查询一对多/多对多关系?

  19. 19

    Flask-SQLAlchemy更新一对多记录

  20. 20

    如何使用flask-sqlalchemy多次插入多对多关系?

  21. 21

    sqlalchemy中的多对多查询

  22. 22

    使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

  23. 23

    使用Flask-SQLAlchemy进行多对多查询

  24. 24

    Jsonify flask-sqlalchemy烧瓶中的多对一关系

  25. 25

    Flask-Sqlalchemy,多对多关系中的辅助表的主键

  26. 26

    Flask SQLalchemy-多对多-显示带有所有标签的照片(或包含所有帖子的博客等)

  27. 27

    在Flask sqlalchemy中订购一对多模型?

  28. 28

    SqlAlchemy(Postgres + Flask):如何求和多列?

  29. 29

    Flask-SQLAlchemy多对多插入

热门标签

归档