Повторная отправка некоторых полей внутри формы сбрасывает поля выбора
Я сделал форму внутри страницы с подробной информацией о пользователе, где суперпользователь может заполнять или обновлять их. вот модель формы, которую я использую:
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}}. что я делаю не так? почему это происходит только с полями выбора?