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 |