• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

intergrityError 질문드립니다.

21.09.26 12:59 작성 조회수 134

0

강의 잘 듣고 있습니다. 선생님.

다름이 아니라, form_valid 구현을 했음에도 불구하고

해당 에러가 지속적으로 발생하였습니다.

views.py

from profileapp.forms import ProfileCreationForm
from profileapp.models import Profile


class ProfileCreateView(CreateView):
model = Profile
form_class = ProfileCreationForm
context_object_name = 'targetProfile'
success_url = reverse_lazy('accountapp:hello_world')
template_name = 'profileapp/create.html'

def form_valid(self, form):
temp_profile = form.save(commit=False)
temp_profile.user = self.request.user
temp_profile.save()
return super().form_valid(form)

해당 views.py도 문제 없이 잘 작성한 거 같은데, 이런 오류가 왜 계속 발생하는 지 모르겠네요. 답변 부탁드릴게요!

답변 3

·

답변을 작성해보세요.

0

주먹밥님의 프로필

주먹밥

2022.08.20

안녕하세요 저도 여기서 막혀서 고생중입니다. 처음에는 저도 모르게 연습하는 과정중에 프로필생성되었나 싶었는데 아이디를 accounts 에서 새로 만들고 그걸로 해도 역시 동일한 에러가 납니다.

 

프로필을 만든적이 없는 것 같아요. 아이디를 새로 만들어도 동일합니다. 모델을 직접 들여다보고 프로필을 직접 삭제할 방법은 없을까요?

또 한가지 궁금한점은 프로필을 생성을 안해서 그런지 mypage 에는 create profile 이 뜹니다. 물론 프로필 생성여부를 확인해서 프로필 생성이 안되었을때만 뜨도록 하는 코드는 영상 따라 넣었구요

 

어디가 문제일까요? ㅠ

0

우민철님의 프로필

우민철

질문자

2021.09.28

감사합니다! 

0

안녕하세요.
질문 확인했습니다.

위의 에러는 Integrity Error,
데이터베이스 내부 무결성 체크를 하다가 발생한 에러로 보입니다.

말씀해주신 경우에는 View 와는 상관이 없고,
models.py 와 상관이 있어보입니다.

Profileapp 을 작성할 때 model 내부에 user 라는 속성을 하나 만들었습니다.
그리고 해당 user 는 OneToOneField 를 통해서 User 객체와 연결해줬구요.

그렇기 때문에 User 객체 한개에는 단 한개의 Profile 모델만 존재해야 합니다.

그런데, 질문자님 상태를 보니, 이미 Profile을 만드신것 같아요.
Profile 이 이미 User와 연결되어있는 상태에서 계속 더 Profile 을 만들려고 해서
해당 에러가 생기는 것으로 보입니다.

해당 에러를 없애기 위해서 Create Profile 버튼을 숨기는 과정을 진행합니다.
그럼에도 완벽히 해당 경우를 없애고 싶다면,
Create Profile 페이지를 접근할 때,
해당 유저의 프로필 존재 유무를 확인하는 과정을 넣으시면 될 것으로 보여요.

 


답변이 도움되셨길 바래요!
좋은하루 보내시길 바랍니다.

감사합니다-