Adding group while creating a new user in django
In Django, when creating a new user, you can add the user to a group by using the groups
field in the User
model. Here are the steps:
Method 1: Using the User
model's groups
field
You can add a group to a user when creating a new user by using the groups
field in the User
model. Here's an example:
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
# Create a new user
user = User.objects.create_user('john', '[email protected]', 'password123')
# Add the user to a group
group = Group.objects.get(name='editors') # Replace with the desired group name
user.groups.add(group)
Method 2: Using the UserCreationForm
You can also add a group to a user when creating a new user using the UserCreationForm
. Here's an example:
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import Group
class MyUserCreationForm(UserCreationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['groups'] = forms.ModelMultipleChoiceField(queryset=Group.objects.all())
def save(self, commit=True):
user = super().save(commit=False)
user.set_password(self.cleaned_data['password1'])
if commit:
user.save()
return user
# Create a new user
form = MyUserCreationForm({'username': 'john', 'email': '[email protected]', 'password1': 'password123', 'password2': 'password123'})
form.save()
In this example, we've added a groups
field to the UserCreationForm
and overridden the save
method to add the user to the selected group(s).
Method 3: Using a custom view
You can also add a group to a user when creating a new user by creating a custom view that handles the creation of the user and adds the user to the desired group. Here's an example:
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
def create_user(request):
if request.method == 'POST':
username = request.POST['username']
email = request.POST['email']
password = request.POST['password1']
group_name = request.POST['group'] # Replace with the desired group name
user = User.objects.create_user(username, email, password)
group = Group.objects.get(name=group_name)
user.groups.add(group)
return redirect('user_created')
return render(request, 'create_user.html')
In this example, we've created a custom view that handles the creation of a new user and adds the user to the selected group.