I want to make a view where the user can change the attributes for his User object: first_name, last_name and email address. Django has a built in UserCreationForm for creating users. I already have an extended version that also includes email, first_name and last_name. Now I am trying to extend that one to not include the password and username.
from django.contrib.auth.forms import UserCreationForm
class ExtendedUserCreationForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'password1', 'password2',
'email', "first_name", 'last_name' )
class UserEditForm(ExtendedUserCreationForm):
class Meta:
model = User
exclude = ('username', 'password1', 'password2')
The UserEditForm I am looking for will of course not be able to create new instances, but it will only be used to edit existing instances:
form = UserEditForm(instance=request.user)
However, the username field and password fields are still shown. How can I exclude these?
It’s not a bad idea to have a look at a class you subclass.
password1andpassword2fields are defined in form directly, not in the model. Soexcludeandfieldswill have no effect on them. Just make your ownModelFormas @MatthewSchinckel suggests.