[Python Django] __init__() got an unexpected keyword argument 'instance' 에러 발생시 대처법

2022. 3. 26. 09:55Python/Django Framework 이것저것 정리

반응형

1. 발단

FormView 중 UpdateView를 사용하던 도중 다음과 같은 에러를 만났다

__init__() got an unexpected keyword argument 'instance'

문제를 만나게 된 계기는 clean_data를 만들기위해 field를 이용하지 않고 form_class를 쓰면 나타나는 문제였다

model = Board
fields = ["title", "contents"]  # 수정 할 field를 명시한다
template_name = "board_update.html"

>>

model = Board
form_class = BoardUpdateForm
template_name = "board_update.html"

2. 상태

당시의 폼은 다음과 같았다

class BoardUpdateForm(forms.Form):
    class Meta:
        model = Board
        fields = ('title', 'contents')

결과는 다음과 같았다

TypeError: __init__() got an unexpected keyword argument 'instance'

3. 해결

처리 방법은 의외로 간단한데, 상속받은 forms.Form을 forms.ModelForm으로 수정하니 정상작동했다.

class BoardUpdateForm(forms.ModelForm):
    class Meta:
        model = Board
        fields = ('title', 'contents')

어찌 생각해보면 당연한 문제였는데, 아무리 찾아도 해당 문제에 대한 대처가 나와있지 않아 도움이 될까 적어본다

이런 간단한 실수를 할만한 사람들이 없었기 때문에 아마 정보가 없었겠지만, 참 시간이 많이 들어간 에러였다

 
반응형