我的数据库中有以下两个模型:
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'
的错误。什么是正确的方法?
任何帮助都会受到关注!
答案 0 :(得分:1)
我相信你仍然可以使用group_by()和having()函数的连接。这是一个例子taken from the docs for having() that might be what you're looking for:
if(e.getSource()== showRGBCube){
cubedemo.CubeDemo.launch();
}