back_populates

송용진·2024년 10월 28일

back_populates 옵션은
SQLAlchemy에서 두 개의 관계가 서로를 참조할 때 사용되는 속성
이 옵션은 두 테이블 간의 양방향 관계를 설정할 수 있도록 해줌

양방향 관계

두 개의 모델이 서로 참조할 때,
한 모델에서 다른 모델의 관계를 정의하고,
반대 방향에서도 그 관계를 정의함
이때 back_populates를 사용하여 서로 연결

예시

  1. Gym과 Owner:
    - Gym 모델에서 owner 관계를 정의하고,
    Owner 모델에서 gyms 관계를 정의할 수 있음
    - Gym 모델은 owner를 통해 소유자를 참조하고,
    Owner 모델은 gyms를 통해 해당 소유자가 소유한 체육관들을 참조함
class Gym(Base):
    # ...
    owner = relationship("Owner", back_populates="gyms")

class Owner(Base):
    # ...
    gyms = relationship("Gym", back_populates="owner")

이렇게 설정하면,
gym.owner를 통해 체육관의 소유자에 접근할 수 있고,
owner.gyms를 통해 소유자가 소유한 체육관 목록에 접근할 수 있음
이를 통해 데이터의 무결성을 유지하고,
관련 객체 간의 탐색이 용이해짐

요약

  • back_populates는 두 모델 간의 양방향 관계를 설정하는 데 사용됨
  • 이를 통해 한 쪽에서 객체를 수정하면,
    반대쪽에서도 자동으로 업데이트된 결과를 반영할 수 있음
  • 관계의 명확성을 높이고,
    데이터베이스 모델링을 더 직관적으로 만들어줌
profile
개발자

0개의 댓글