Collision when adding column to Django model class
장고 모델의 클래스에 column을 추가하면서 생기는 충돌
user.Profile.user: (fields.E303) Reverse query name for 'Profile.user' clashes with field name 'User.profile'. HINT: Rename field 'User.profile', or add/change a related_name argument to the definition for field 'Profile.user'.
프로젝트 진행중 프로필 모델을 굳이 나눌 필요가 없어보여서 유저모델에 병합하는 과정 중 발생한 문제이다.
이는 프로필클래스에서 유저에 포린키로 연결을 했는데
포린키로 연결한 클래스의 column에 profile이라는 클래스와 동일한 이름이 있어 생기는 충돌이다.
이 경우에는 일단 user클래스 내부에 column을 임시 이름으로 설정해주고
profile 클래스 내부의 데이터를 user클래스의 프로필에 추가시켜준 뒤
다시 user클래스의 column이름을 수정해주면 된다.
이를 위해 할 수 있는 방법
1. 데이터 옮겨넣기
sqlite> update user_user set profile_text = (select profile_text from user_profile where user_id = id);
프로필 모델의 id와 유저모델의 id가 같은 경우 프로필모델의 프로필내용(profile_text)을 유저모델의 프로필 내용에 넣어준다는 뜻이다.
**2. 데이터 입력 후 삭제**
sqlte> update user_user set profile_text = "hi" where id = 1;
id가 1인 user클래스에 hi라는 값을 지정하는경우이다.
이는 옮겨넣는 과정이 아니라 직접 채우는방법으로,, 실제로는 못쓸듯하고 지금 나같이 유저 id가 1개뿐일때나 사용가능 할듯 하다.
맨 뒤의 where id = 1부분을 입력하지 않으면 모든 id의 profile이 hi로 통일된다.