Search code examples
djangodjango-modelsdjango-formsdjango-admindjango-users

How can i add fields in my CustomUserCreationForm?


Forms.py

class CustomUserCreationForm(UserCreationForm):

    #phone_number = forms.CharField(max_length = 100)
    class Meta:
        model = CustomUser
        fields = ('username', 'email','first_name','last_name', 'phone_number', 'middle_name')

Admin.py

class CustomUserAdmin(UserAdmin):
    model = CustomUser
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    fieldsets = (
        (('User'), {'fields': ('username', 'email', 'phone_number', 'first_name', 'last_name', 'middle_name',
         'is_staff', 'is_superuser', 'is_active', 'is_parent', 'is_teacher')}),
    )

Models.py (All the fields in Admin.py are declared here without errors)

class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length = 100, blank=True, null = True)
    first_name = models.CharField(max_length = 100, default = '')
    last_name = models.CharField(max_length = 100, default = '')

AddNewUser Image Here

As you can see, I tried adding a Charfield directly in CustomUserCreationForm and I also tried adding fields but it just would not appear whenever I add new user.


Solution

  • This should work for you

    class CustomUserAdmin(UserAdmin):
        model = CustomUser
        add_form = CustomUserCreationForm
        form = CustomUserChangeForm
        fieldsets = (
            (('None'), {'fields': ('username', 'email', 'phone_number', 'first_name', 'last_name', 'middle_name',
             'is_staff', 'is_superuser', 'is_active', 'is_parent', 'is_teacher')}),
        )
        add_fieldsets = (
            (None, {
                'classes': ('wide',),
                'fields': ('username', 'email', 'phone_number', 'first_name', 'last_name', 'middle_name',
             'is_staff', 'is_superuser', 'is_active', 'is_parent', 'is_teacher' ),
            }),
        )
        admin.site.register(CustomUser, CustomUserAdmin),