【发布时间】:2016-03-12 16:47:59
【问题描述】:
我的数据库中有以下两个模型:
class Category(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True)
websites = db.relationship('Website', backref='category', lazy='dynamic')
class Website(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
url = db.Column(db.String(1000), nullable=False)
class_name = db.Column(db.String(50), nullable=False)
我现在要做的是编写一个表达式来加载与一个或多个网站相关联的所有类别。在 SQL 中,我可以使用join 和having 来实现这一点,但是我无法将其转换为 SQLAlchemy。
我首先尝试导入和使用func,但后来意识到它没有在 Flask-SQLAlchemy 中定义。我的下一次尝试是Category.query.having(Category.websites.count() > 1).all(),但这给了我一个错误AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Category.websites has an attribute 'count'。这样做的正确方法是什么?
任何帮助将不胜感激!
【问题讨论】:
-
您的属性称为
websites,而不是wesbites。 -
@dirn 非常感谢!不过,我仍然收到错误消息。已更新我的问题。