Самый простой способ объяснить это на примере:
class OrderStatus(enum.Enum):
NEW = "New"
TO_BE_GENERATED = "Waiting for generation"
COMPLETED = "Completed"
CANCELED = "Canceled"
@dataclass
class Customer(Base):
__tablename__ = 'customers'
orders = db.relationship('Order', backref='Customer', lazy=True)
@dataclass
class Order(Base):
__tablename__ = 'orders'
customer_id = db.Column(db.Integer, db.ForeignKey('customers.id'))
customer = db.relationship("Customer", foreign_keys=[customer_id])
status = db.Column(db.Enum(OrderStatus))
def get_customers_with_orders(start=None, limit=None):
return Customer.query.offset(start).limit(limit).from_self().join(Order).all(), customers.count()
Используя get_customers_with_orders () Я могу получить всех клиентов.
Как получить только клиентов (с всех связанных заказов), которые имеют хотя бы один заказ со статусом OrderStatus.COMPLETED