Select a valid choice ModelMultipleChoiceField error

295 views Asked by At

I'm trying to make form that allows to user selecting employers by the checkbox list, depends on their team using ModelMultipleChoiseField. I can filter proper employers per team but when i select any of then i had error

Select a valid choice. 3 is not one of the available choices.

And i don't know what is wrong ;/

This is my form class :

class TaskDictForm(forms.Form):
team_id = 0
order = forms.IntegerField(min_value=0)
name = forms.CharField(max_length=200)
start = forms.DateTimeField()
previous = forms.CharField(max_length=200)
employers = forms.ModelMultipleChoiceField(queryset=None, widget=forms.CheckboxSelectMultiple)

def __init__(self, *args, **kwargs):
    initial = kwargs.get('initial', {})
    if hasattr(self, 'initial_values') and not kwargs.get('data'):
        for field_name, value in self.initial_values.items():
            if not getattr(kwargs.get('instance', None), field_name, None):
                initial[field_name] = value

        kwargs.update({'initial': initial})
    if hasattr(self, 'required_fields'):
        for field_name in self.required_fields:
            self.fields[field_name].required = True
    tmp = kwargs.pop('pk', None)
    self.team_id = tmp
    super(TaskDictForm, self).__init__(*args, **kwargs)

    self.fields['employers'].queryset = Employer.objects.filter(team=self.team_id)

Employer and Team models:

    class Team(models.Model):
    name = models.CharField(default='Team', max_length=100, unique=True)

    def __str__(self):
        return self.name


class Employer(models.Model):
    user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True)
    team = models.ForeignKey(Team, on_delete=models.SET_NULL, null=True)
    team_leader = models.BooleanField(default=False)
    project_menager = models.BooleanField(default=False)
    # project_id = models.ForeignKey(Project, on_delete=models.SET_NULL, null=True)

    hourly_rate = models.IntegerField(default=0)
    working_time = models.FloatField(default=0.0)

    def __str__(self):
        return (self.user.first_name + ' ' + self.user.last_name)

The same proble is when i try use MultipleChoiseField

0

There are 0 answers