-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
django.contrib.auth.forms.UserChangeForm 질문드립니다.
22.10.29 20:48 작성 조회수 330
0
안녕하세요! 선생님 강의를 들으면서 장고로 게시판을 만들어 보고 있는데, 유저 모델을 수정(프로필 수정 기능)하는 뷰를 만들면서 UserChangeForm을 사용하고 있습니다.
이때 데이터베이스에 저장된 모델의 필드명은 변경하지 않고, 폼 화면에서 username 대신 id라고 화면에 나올 수 있도록 하려면 어떻게 해야할까요? 장고 깃헙보면서 손대봤는데 안되서 질문드립니다. 감사합니다/
class CustomUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = get_user_model()
fields = ['username', 'first_name', 'last_name', 'email']
답변을 작성해보세요.
0
Grid
질문자2022.10.30
와 답변 감사합니다! 제가 생각하던게 맞습니다. 폼에서 필드를 저런식으로 추가하면 되는군요. 정말 답변 빨리 달아주셔서 놀랐습니다. 다시 한번 감사드립니다.
0
0
이진석
지식공유자2022.10.30
안녕하세요.
username 폼 필드의 레이블을 id로 보여지게 하실려는 것인가요?
그렇다면, 해당 폼 클래스의 생성자를 재정의하신 후에 부모의 생성자 호출하신 후에, self.fields[“username”] 접근을 통해 생성된 폼 필드을 참조하실 수도 있고 레이블 등의 값을 변경하실 수도 있습니다.
Grid
질문자2022.10.30
답변 감사합니다. 답변 달아주신 방법대로 시도해봤는데 잘 안돼서 혹시 여기서 어떤식으로 수정을 해야할까요?
이 코드에서 Meta클래스에서 'username'을 빼버리면 self.fields에서도 username이 사라져버려서 username은 안보이고 id만 나오게 하는 방법을 모르겠습니다.
class CustomUserChangeForm(UserChangeForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['id'] = self.fields['username']
class Meta(UserChangeForm.Meta):
model = get_user_model()
fields = ['username', 'first_name', 'last_name', 'email']
답변 3