Фильтр групп вошедших в систему пользователей перед сохранением Django

Здравствуйте, при регистрации нового пользователя все группы перечислены для выбора пользователем из выпадающего списка. Я пытаюсь отфильтровать этот список только для тех групп, в которых состоит зарегистрированный пользователь.

views.py

        from .forms import UserRegisterForm
    @login_required(login_url='login')      
        def addUser(request):
            if request.method == 'POST':
                form = UserRegisterForm(request.POST)
                if form.is_valid():
                    user = form.save()
                    group = form.cleaned_data['group']        
                    group.user_set.add(user)
                    return redirect('login')
            else:
                form = UserRegisterForm()
            return render(request, 'base/adduser.html', {'form':form})

forms.py

    from django.contrib.auth.forms import UserCreationForm    
    class UserRegisterForm(UserCreationForm):
            group = forms.ModelChoiceField(queryset=Group.objects.all(), required=True)
            
            
        
            class Meta:
                model = User
                fields = ['username', 'password1', 'password2', 'group'] 

adduser.html

    > {% extends 'main.html' %}
    > 
    > {% block content %} 
    <style>
    >     .home-container{ display:grid; grid-template-columns: 1fr 4fr;
    > 
    >     } </style> <div class="home-container">
    >     
    >         
    >         
    >     <div>
    >         
    >     </div>
    >         <div>
    >             {% include 'settingmenu.html' %}
    >         
    >     </div>
    >     <div></div>
    >     <div>
    >         <form method="POST" action="">
    >             {% csrf_token %}
    >     
    >             {{form.as_p}}
    >     
    >             <input type="submit" value="Add User" />
    >         </form>
    > 
    > 
    > 
    >     </div> </div>   {% endblock %}

вы можете попробовать следующее

forms.py

class UserRegisterForm(UserCreationForm):
            group = forms.ModelChoiceField(queryset=Group.objects.all(), required=True)
            def __init__(self,*args,**kwargs):
                # you can pass user id or 
                #what ever you need to filter groups
                user = kwargs.pop('user',None) 
                super(UserCreationForm).__init__(*args,**kwargs)
                self.fields["group"].choices = # use user to query groups he belongs to
            
        
            class Meta:
                model = User
                fields = ['username', 'password1', 'password2', 'group'] 

и в вашем представлении использовать

form = UserRegisterForm(request.POST,user=your_user)

вместо

form = UserRegisterForm(request.POST)
Вернуться на верх