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?
You can just remove the password2 field in the init of the form like so:
class MyUserCreationForm(UserCreationForm):
def __init__(self, *args, **kargs):
super(MyUserCreationForm, self).__init__(*args, **kargs)
del self.fields['password2']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With