假设我有这两个模型:
def Client(db.Model):
id = db.Column(db.Integer, primary_key=True)
invoices = db.relationship('Invoice', backref='client')
def Invoice(db.Model):
id = db.Column(db.Integer, primary_key=True)
Run Code Online (Sandbox Code Playgroud)
我想要检索Client至少1 Invoice和不到20的所有Invoice.我希望它能像这样工作:
Client.query.join(Invoice).filter(and_(Invoice.count() > 1, Invoice.count() <= 20))
Run Code Online (Sandbox Code Playgroud)
或者甚至这会很好:
Client.query.join(Invoice).filter(and_(count_(Invoice) > 1, count_(Invoice) <= 20))
Run Code Online (Sandbox Code Playgroud)
但当然,这不可能是这么简单..count()不能从那里工作很明显,我无法找到一个count_()在sqlalchemy.func.
Pie*_*aul 11
感谢同事和代码,我们得到了它的工作:
client = Client.query\
.outerjoin(Client.invoices)\
.group_by(Client)\
.having(\
func.and_(\
func.count_(Client.invoices) >= 1)\
func.count_(Client.invoices) <= 20)\
)
).all()
Run Code Online (Sandbox Code Playgroud)
我希望它对某人有所帮助!
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |