본문 바로가기
개발

relationship

by 박영귤 2023. 8. 28.
class OrderTicket(db.Model):
	id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)
	ticket_id = db.Column(db.Integer, db.ForeignKey('ticket.id', ondelete='CASCADE'), primary_key=True, nullable=False)
	ticket = db.relationship('Ticket', back_populates='order_ticket')
	user_id = db.Column(db.String(36), db.ForeignKey('user.id', ondelete='CASCADE'), nullable=False)
	user = db.relationship('User', back_populates='order_ticket')

대충 이런 코드였는데, 아래와 같은 에러가 났다.

sqlalchemy.exc.InvalidRequestError: Mapper 'mapped class User->user' has no property 'order_ticket'

Ticket 모델에는 relationship을 지정해주었지만, User 모델에서는 지정해주지 않아서 생긴 문제였다.

User같은 관계가 많은 테이블은 relationship 을 모두 지정해주는게 오히려 가독성도 떨어트리는 것 같아서 지정해주지 않을 수 있는 방법을 찾아보았다.

back_populates말고, backref를 사용하면 User 모델에서 relationship 을 정의해주지 않아도 상관이 없는 것을 알았다.

'개발' 카테고리의 다른 글

[pytest] 파이썬 api 테스트  (0) 2023.08.30
[python] 정규표현식  (0) 2023.08.28
[Flask] traceback  (0) 2023.08.21
[Flask] api 에러 핸들러  (0) 2023.08.21
[flask] 로그 출력  (0) 2023.08.21