Django. Как передать значение в CharField с выбором в формах?

Я хочу протестировать пост запрос в моем представлении обновления. Для этого мне нужно заполнить все поля в соответствующей форме. После того, как я передал данные для всех полей, форма имеет одну ошибку, и это CharField с параметром choices. Сообщение об ошибке:

.......<ul class="errorlist"><li>user<ul class="errorlist"><li>Select a valid choice. That choice is not one of the available choices.</li></ul></li><li>position<ul class="errorlist"><li>Select a valid choice. CEO is not one of the available choices.</li></ul></li></ul>

Модель:

class Employee(models.Model):
    SALES_MANAGER  = 'SM'
    CHIEF_SALES_MANAGER = 'CSM'
    CEO = 'CEO'
    POSITION_CHOICES = (
        (SALES_MANAGER, 'SM'),
        (CHIEF_SALES_MANAGER, 'CSM'),
        (CEO, 'CEO'),
    )

    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    position = models.CharField(max_length=255, choices=POSITION_CHOICES, default=
                                SALES_MANAGER, null=True, blank=True)
    reports_to = models.ForeignKey('self', on_delete=models.DO_NOTHING, null=True, blank=True)
    birthday = models.DateField()
    hire_date = models.DateField()
    address = models.CharField(max_length=255)
    phone_number = models.CharField(max_length=15)
    pfp = ResizedImageField(size=[350, 350], upload_to='media/profile_pics/user.id/',
                            blank=True,default='media/profile_pics/default_pfp.png')

Вид:

class EmployeesUpdateView(LoginRequiredMixin, UpdateView):
    model = Employee
    template_name = 'employees/employee_update.html'
    form_class = EmployeeUpdateForm

Форма:

class EmployeeUpdateForm(forms.ModelForm):

    class Meta:
        model = Employee
        fields = ['first_name', 'last_name', 'user', 'position', 'reports_to',
                  'birthday', 'hire_date', 'address', 'phone_number', 'pfp']

Тест:

def test_updateview_post(self):
    self.client.force_login(user=self.test_user)
    response = self.client.post(reverse('employees:employee-update', kwargs={'pk': self.test_employee.pk}),
                                {
                                    'first_name':'John', 'last_name': 'Smith',
                                    'user': self.test_user, 'position': 'CEO',
                                    'birthday': date(year=1995, month=3, day=20),
                                    'hire_date': date(year=2019, month=2, day=15),
                                    'address':'LA',
                                    'phone_number': '202-555-0156',
                                })
    print(response.context['form'].errors)
    self.test_employee.refresh_from_db()
    self.assertEqual(self.test_employee.first_name, 'John')
position = forms.ChoiceField(choices=POSITION_CHOICES)

Посмотрите это

Вернуться на верх