[Python Django] __init__() got an unexpected keyword argument 'instance' 에러 발생시 대처법
2022. 3. 26. 09:55ㆍPython/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')
어찌 생각해보면 당연한 문제였는데, 아무리 찾아도 해당 문제에 대한 대처가 나와있지 않아 도움이 될까 적어본다
이런 간단한 실수를 할만한 사람들이 없었기 때문에 아마 정보가 없었겠지만, 참 시간이 많이 들어간 에러였다
반응형
'Python > Django Framework 이것저것 정리' 카테고리의 다른 글
[Python Django] FormView 작성시 fields설정에서 필드 순서가 뒤죽박죽 나올때 (0) | 2022.03.26 |
---|---|
[Python Django] 필드 타입 클래스 정리 (0) | 2022.03.26 |