我在类别和产品之间有多对多的关系,如下所示:
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 'sqlAlchemy Category Model """
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(80),nullable=False)
products = db.relationship('Product',backref=db.backref('products',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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。