wishpang 기초 모델 구현하기

ool2o8·2024년 1월 15일
0

wishpang (FastAPI+React)

목록 보기
3/6

1:N relationship

아래는 Product(1): PriceLog(N) 관계이다.
프로덕트는 여러개의 price log 가질 수 있다.

  • 1:N 관계이기 때문에 product_id 컬럼을 선언한다.
  • 외래키를 backref 또는 back_populates 로 선언 할 수 있다. 이때 backref했을 때에 한 테이블에서만 명시해도 되지만 back_populates로 선언 했을 때에는 양쪽 테이블 모두에 명시 해야 한다.

N:M recursive relationship

본인이 본인을 참조 할 수 있는 관계 만들기

  • 중간 테이블을 생성한다.
    follow_table = db.Table('follow',db.Column('user_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), primary_key=True),db.Column('following_id', db.Integer,db.ForeignKey('users.id',ondelete='CASCADE'),primary_key=True))

  • 모델에 관계를 명시한다.
    following = db.relationship('Users', secondary=follow_table, primaryjoin=(id == follow_table.c.user_id), secondaryjoin=(id ==follow_table.c.following_id), backref=db.backref('followers'))

secondary=follow_table : 연관 테이블 'follow_table' 명시
primaryjoin=(id == follow_table.c.user_id): 왼쪽 테이블('Users')과 연관 테이블 조인 조건
secondaryjoin=(id == follow_table.c.following_id): 연관 테이블과 오른쪽 테이블('Users') 조인조건

0개의 댓글