因此,我有一个对象服务,对象服务有一个指向对象服务员的外键。对象服务员还具有一个时间字段“ exit”,该字段必须小于当前时间。想法是返回所有对象Waiter并计数与它们相关联的对象服务的数量,该对象具有大于当前时间的字段出口。然后,我必须对表执行相同的操作。
最后,我需要过滤出当前拥有四个或多个当前服务的服务员,并且我必须过滤具有一个或多个服务的表。
这是我的模型:
class Waiter(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
service = db.relationship('Service', backref='waiter', lazy=True)
class Table(db.Model):
id = db.Column(db.Integer, primary_key=True)
table_no = db.Column(db.String(128))
service = db.relationship('Service', backref='table', lazy=True)
class Service(db.Model):
id = db.Column(db.Integer, primary_key=True)
table = db.Column(db.Integer, db.ForeignKey('table.id'))
waiter = db.Column(db.Integer, db.ForeignKey('waiter.id'))
arrival = db.Column(db.DateTime, default=datetime.datetime.now(mx))
exit = db.Column(db.DateTime)
tip = db.Column(db.Numeric(10,2))
到目前为止,我有类似的东西:
waiters = Waiter.query(Waiter.id, \
func.count(*"I don't know what to put here"*).\
label("service_count")).groupby(Waiter.id).subquery()
编辑:
经过进一步研究,我得出以下查询。我仍然不知道是否正确:
waiters = Waiter.query(Waiter.id, \
func.count("*").filter(Service.exit>=datetime.datetime.now()) .\
label("service_count")).groupby(Waiter.id).subquery()
任何帮助深表感谢。非常感谢你。
我得到的答案可以满足我的要求,但是我得到的不是数值注释,而是数值。是这样的:
waiters = db.session.query(Waiter, func.count(Service.id).\
filter(Service.exit>time)).\
outerjoin(Service).group_by(Waiter).all()
它返回如下内容:
[(<Waiter 1>, 0)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句