Struggling with Class Based Form Django (save foreign key attributes)

I have imported my MySQL DB to Django. In this DB, I have an intermediate table called GroupUsers which links User and GroupName .

I would like to make a form where I can fill in the user attributes and add it directly to a selected group.

So basically we have an user form with an extra field corresponding to the groups that I need to select among three categories: family, friends, pro.

I’m not able to make it work.


    #models.py
    class GroupUsers(models.Model):
        group = models.ForeignKey(GroupName, on_delete=models.CASCADE)
        user = models.ForeignKey('User', on_delete=models.CASCADE)
    
        class Meta:
            managed = False
            db_table = 'group_users'
            unique_together = (('group', 'user'),)
    
        def __str__(self):
            return self.group.name
    
    class User(models.Model):
        email = models.CharField(unique=True, max_length=180)
        last_name = models.CharField(max_length=32)
        first_name = models.CharField(max_length=32)
    
        class Meta:
            managed = False
            db_table = 'user'
            verbose_name = "user"
    
        def __str__(self):
            return self.first_name
    
    class GroupName(models.Model):
        group_id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
        description = models.TextField(blank=True, null=True)
    
        class Meta:
            managed = False
            db_table = 'group_name'
            verbose_name = 'Group'
    
        def __str__(self):
            return self.name



    #forms.py
    class UserCreateForm(forms.ModelForm):
        class Meta:
            model = User
            fields = ('first_name','last_name', 'email')
            
        def __init__(self, *args, **kwargs):
            super(UserCreateForm, self).__init__(*args, **kwargs)
            self.fields['group'] = forms.ModelChoiceField(queryset=GroupName.objects.all())


    #view.py
    class UserCreateView(SuccessMessageMixin, LoginRequiredMixin, CreateView):
    	template_name = 'dashboard/users/user_create_form.html'
    	model = User
    	form_class = UserCreateForm
    	
    	def get_object(self, queryset=None):
    		obj = super().get_object(queryset)
    		return obj
    
    	def get_success_url(self):
    		messages.success(self.request, "The user %s was added successfully" % (
    				self.object.first_name))
    		return reverse_lazy('dashboard:user')
    
    	def form_valid(self, form):
    		group = form.cleaned_data['group']
    		return super().form_valid(form)

At this point, I’m stuck. I don’t know how can I save the GroupUser because it is composed of two objects : an user and a group name. I don’t have access to the group id.

I tried with the inline formset factory approach but I’m not able to obtain the result.

What I would like to do maybe is to do the following (pseudo code)

    def form_valid(self, form):
         group = form.cleaned_data['group']
         user = getUser()
         group_user = GroupUser.objects.create(user=user, groupName=group)
         group_user.save()
         return super().form_valid(form)

The things here is I don’t know how to get the Object since for example the Group, I have just access to the char field and not the ID.

Could you please help me ? I’m sure, it’s not that difficult. Thank