인프런 커뮤니티 질문&답변

류재안님의 프로필 이미지
류재안

작성한 질문수

파이썬 웹 개발(Flask, SQLAlchemy 이용)

many-to-many 2

(many to many)에러문구 관련

작성

·

218

0

안녕하세요.

그대로 코드를 진행했는데요. 상호참조하는 것 관련해서 에러가 나는데 그냥 무시를 해도 될까요?

=>

admin = Role(position='admin') 실행시 에러문구

workspace/inflearn_240120/venv/bin/ipython:1: SAWarning: relationship 'User.project' will copy column user.id to column user_project.user_id, which conflicts with rel

ationship(s): 'Project.user' (copies user.id to user_project.user_id), 'User.projects' (copies user.id to user_project.user_id). If this is not the intention, consider

if theserelationships should be linked with back_populates, or if viewonly=True should be applied to one or more if they are read-only. For the less common case that

foreign key constraints are partially overlapping, the orm.foreign()annotation can be used to isolate the columns that should be written towards. To silence this war

ning, add the parameter 'overlaps="projects,user"' to the 'User.project' relationship. (Background on this warning at: https://sqlalche.me/e/20/qzyx) (This warning ori

ginatedfrom the configure_mappers() process, which was invoked automatically in response to a user-initiated operation.)

 

답변 1

0

류재안님의 프로필 이미지
류재안
질문자

backref ='user' -> back_populates='users'

backref='project' -> back_populates='projects'

로 수정하니 경고문구가 없어졌고 실행도 잘 되는데요.

 

Document를 여러번 읽어보니, 헷갈리기는 한데요..

 

backref를 사용할 때는 parent 이든 child 이든 한쪽에만 하고 양쪽으로는 back_populates 를 넣는 듯 한데..

 

사실 sqlalchemy 에서 이 관계설정이 핵심일 거 같은데.

혹시 추가적인 설명을 좀 해주실 수 있을지요?

 

류재안님의 프로필 이미지
류재안

작성한 질문수

질문하기