0

I have a request table that is linked to a request_entity table by a One-To-Many relationship. Now each request_entity has a location_id, service_id and module_id, which are also respective tables. When querying against a request, I want to be able to fetch the service, location and module for each one of the request_entities for the request.

Request Model

class Request(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    customer_email: str
    customer_name: str
    company_name: str
    social_security_number: str
    phone_number: str
    total_cost: float = Field(default=None)
    active: int = Field(default=1)
    offer_sent: int = Field(default=0)
    offer_accepted: int = Field(default=0)

    request_entities: Optional["RequestEntity"] = Relationship(back_populates="request")

Request Entities Model

class RequestEntity(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    request_id: Optional[int] = Field(default=None, foreign_key="request.id")
    location_id: Optional[int] = Field(default=None, foreign_key="location.id")
    service_id: Optional[int] = Field(default=None, foreign_key="service.id")
    module_id: Optional[int] = Field(default=None, foreign_key="module.id")
    description: str = Field(default=None, sa_column=Column(TEXT))
    area: int = Field(default=None)

    request: Optional["Request"] = Relationship(back_populates="request_entities")
    location: Optional[Location] = Relationship(back_populates="request_entities")
    service: Optional[Service] = Relationship(back_populates="request_entities")
    module: Optional[Module] = Relationship(back_populates="request_entities")

Now I want to query the location, module and service for the request_entites while fetching a request.

The query now is

statement = select(Request).where(Request.id == request_id)

Any suggestions?

Ismail Farooq
  • 145
  • 1
  • 3
  • 13

0 Answers0