Форум сайта python.su
Здравствуйте, есть три таблицы User, Place, Sales:
class User(db.Model): id = db.Column(db.Integer, primary_key=True) class Place(db.Model): id = db.Column(db.Integer(), primary_key=True) sales = db.relationship('Sales', backref='place', lazy='dynamic') def regular_clients(self, time_start, time_end): pass class Sales(db.Model): id = db.Column(db.Integer(), primary_key=True) place_id = db.Column(db.Integer, db.ForeignKey('place.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) buyer = db.relationship("User", foreign_keys=[user_id]) timestamp = db.Column(db.DateTime(timezone=False),default=datetime.utcnow) sum = db.Column(db.Integer, nullable=False)
def regular_clients(self, time_start, time_end): query = db.session.query(User).join(Sales.user_id).\ filter(Sales.place_id == self.id, Sales.timestamp >= date_start, Sales.timestamp <= date_end)
Офлайн
Смотрите func.count().
Офлайн
написал
amount = db.session.query(User).join(Sales.buyer).\ filter(Sales.place_id == self.id, Sales.timestamp >= time_start, Sales.timestamp <= time_end).\ group_by(User.id).\ having(db.func.count(Sales.id) >= 5).count()
Офлайн
having тут лишнее. Можно было просто использовать and_
Офлайн