'How to pass parameter into the Form?

I have a form class (incorrect) :

class TeamGoalForm(ModelForm):
    class Meta:
        employees = forms.ModelMultipleChoiceField(queryset=Employee.objects.filter(departament=Department.objects.get(manager=Manager.objects.get(end_user_id = request.user.username.upper())),widget=forms.CheckboxSelectMultiple()))
        department = forms.ModelChoiceField(queryset=Department.objects.all())
        model = TeamGoal
        fields = '__all__'
       
        widgets = {
                'employees' : forms.Select(attrs={'class': 'form-control', 'placeholder':'Select employees'}),
            }
                'department':forms.Select(attrs={'class': 'form-control', 'placeholder':'Select department'}),

I want to pass parameter request.user.username.upper() which I have in my view.py. How to implement this in my TeamGoalForm?

my view.py

@login_required(login_url='login')
def add_team_goal(request):
    form = TeamGoalForm(is_manager(request))

    if request.method == 'POST':
        form = TeamGoalForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('team_goal')

    team = get_team(request)

    if team.exists():
        return render(request, 'smth.html', {'form':form,'team':team})

My Employee model:

# Employee section
class Employee(models.Model):
    name                = models.CharField(max_length=30, verbose_name='Name')
    lastname            = models.CharField(max_length=30, verbose_name='Lastname')
    .............
    history             = HistoricalRecords()

    
    def __str__(self):
        return self.name + ' ' + self.lastname

My Department:

class Department(models.Model):
    id          = models.AutoField(primary_key=True)
    title       = models.CharField(max_length=30)
    .........
    manager     = models.ForeignKey(Manager, related_name='manager_name', null=True, on_delete = models.SET_NULL)
    
    history     = HistoricalRecords()

My Managers:

class Manager(models.Model):
    id          = models.AutoField(primary_key=True)
    name        = models.CharField(max_length=30)
    lastname    = models.CharField(max_length=30)
    history     = HistoricalRecords()

    def __str__(self):
        return self.name + ' ' + self.lastname

My TeamGoal:

class TeamGoal(models.Model):
    team_goal_title = models.CharField(max_length=30, verbose_name='Title')
    team_goal_description = models.CharField(max_length=100, blank=True, verbose_name='Description')
    department = models.ForeignKey(Department, verbose_name='Department', on_delete = models.CASCADE, related_name='+', blank=True, null=True, help_text=u'If you assign the team goal for the whole department, please fill only Department field and skip Employee field.')
    employees  = models.ManyToManyField(Employee, null=True,  blank=True, symmetrical=False, related_name='employee_name')
    ......
    history = HistoricalRecords()

In my app I can create Team goal for whole department or for specific group of employees.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source