How to save the user form with ManyToMany relationship

Question:

I am a beginner in django and trying to create a web application.
I am trying to save the user form, but I have the problem that it does not save in the database the ManyToMany relationship of groups in the user_user_groups table

My model

 class User(AbstractUser):
   state = models.BooleanField(default=True)

 def __str__ (self):
    return '{}'.format(self.username,self.state,self.groups)

My form

from django.contrib.auth.models import Group

class UserForm(UserCreationForm):
  username = forms.CharField(label="User",widget=forms.TextInput(attrs= 
  {"class":"form-control"}))
  state = forms.CheckboxInput()
  groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),
  widget=forms.CheckboxSelectMultiple,required=True)
  password1 = forms.PasswordInput()
  password2 = forms.PasswordInput()

class Meta:
    model = User
    fields = [
        "username",
        "password1",
        "password2",
        "state",
        "groups"
        ]

My view

 def create_user(request):
 if request.method == 'POST':
    form = UserForm(request.POST)
    form.fields['username'].help_text = None
    form.fields['password1'].help_text = None
    form.fields['password2'].help_text = None
    if form.is_valid():
        form.save()
        return redirect('/')
    return render(request, 'user/user_form.html',{'form': form})
else:
    form = UserForm()

return render(request, 'user/user_form.html',{'form': form})
Asked By: eli

||

Answers:

Add this code and it works

def create_user(request):
 if request.method == 'POST':
    form = UsuarioForm(request.POST)
    if form.is_valid():
        form2=form.save(commit=False)
        form2.save()
        form.save_m2m()
        return redirect('/')
    return render(request, 'user/user_form.html',{'form': form})
else:   
    form = UsuarioForm()
return render(request, 'user/user_form.html',{'form': form})
Answered By: eli