Повторная отправка некоторых полей внутри формы сбрасывает поля выбора

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

class PsychologicInfo(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    question1 = models.TextField(null=True, blank=True)
    question2 = models.TextField(null=True, blank=True)
    question3 = models.TextField(null=True, blank=True)
    info1 = models.CharField(max_length=64, choices=SURVEY_INFO1_CHOICES, blank=True)
    info2 = models.CharField(max_length=64, choices=SURVEY_INFO2_CHOICES, blank=True)
    info3 = models.CharField(max_length=64, choices=SURVEY_INFO3_CHOICES, blank=True)
    final_assessment = models.TextField(null=True, blank=True)
    is_interviewed = models.BooleanField(default=False)

    def save(self, *args, **kwargs):
        if self.info1:
            self.is_interviewed = 'True'
        super(PsychologicInfo, self).save(*args, **kwargs)

однако, когда я захожу на страницу подробной информации о пользователе и пытаюсь обновить некоторые поля, например, поле итоговой оценки, все поля выбора (info1, info2, info3) сбрасываются! но другие поля остаются прежними, поэтому всякий раз, когда я хочу отредактировать поле, мне нужно снова заполнить эти поля выбора. вот представление, которое я написал:

class PsychologicInfoView(FormMixin, DetailView):
    model = PsychologicInfo
    template_name = 'reg/psychologic-info.html'
    form_class = PsychologicInfoForm

    def get_success_url(self):
        return reverse('psychologic-info', kwargs={'pk': self.object.pk})

    def get_context_date(self, **kwargs):
        context = super(PsychologicInfoView, self).get_context_data(**kwargs)
        context['form'] = PsychologicInfoForm()
        return context

    def post(self, request, pk):
        self.object = self.get_object()
        form = PsychologicInfoForm(request.POST, instance=get_object_or_404(PsychologicInfo, id=pk))
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        f = form.save(commit=False)
        f.user = self.object.user
        f.save()
        return super(PsychologicInfoView, self).form_valid(form)

и вот моя форма:

class PsychologicInfoForm(forms.ModelForm):

    class Meta:
        model = PsychologicInfo
        exclude = ('user', 'is_interviewed')

а шаблон представляет собой простое {{form}}. что я делаю не так? почему это происходит только с полями выбора?

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