To add extra fields to the default Django User model, you can create a new model that inherits from the built-in User model and adds the extra fields you need. Here's an example:
Model
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
# Add extra fields here
phone_number = models.CharField(max_length=20)
address = models.CharField(max_length=200)
from django import forms
from django.contrib.auth.forms import UserChangeForm
from .models import CustomUser
class CustomUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CustomUser
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = CustomUser
fields = ['username', 'email', 'phone_number', 'address']
Views
from django.shortcuts import render, redirect, get_object_or_404
from .forms import ProfileUpdateForm
from django.contrib.auth.decorators import login_required
@login_required
def profile(request):
if request.method == 'POST':
form = ProfileUpdateForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
return redirect('school_list')
else:
form = ProfileUpdateForm(instance=request.user)
return render(request, 'school/profile.html', {'form': form})
Urls
from django.urls import path
from . import views
urlpatterns=[
path('profile/', views.profile, name='profile'),
]