Django ckeditor не может сохранить отредактированные начальные значения поля формы
Я использую основанное на классе представление create view для отображения формы конечному пользователю. Одно из полей формы показывает начальное значение, которое будет изменено конечным пользователем перед сохранением значений в базу данных.
Форма выглядит следующим образом:
class R1Form(forms.ModelForm):
interview_date = forms.DateField(widget=DateInput())
feedback = forms.CharField(widget=CKEditorWidget())
def __init__(self, *args, **kwargs):
super(R1Form, self).__init__(*args, **kwargs)
self.initial['feedback'] = template_R1.objects.all().first().template
class Meta:
model = R1
fields = ['interview_date', 'interviewers', 'feedback', 'comment', 'recommended_level', 'progress']
widgets = {'feedback': CKEditorWidget()}
В приведенной выше форме поле под названием 'feedback' показывает начальное значение из базы данных.
Представление создания, основанное на классе, выглядит следующим образом:
class R1CreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
model = R1
form_class = R1Form
template_name = "interviews/r1/create.html"
# This a quick way to populate fields not present in the model form, but required in the model.
def form_valid(self, form):
form.instance.candidate_id = self.kwargs['candidate']
return super().form_valid(form)
# Required because with HTMX we need to provide a url for post request, and our url also requires additional parameters
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['page'] = self.request.GET.get('page', 1)
context['candidate_pk'] = self.kwargs['candidate']
return context
def get_success_url(self):
return reverse_lazy("cvscreenings-success", kwargs={'candidate': self.kwargs['candidate'], 'message': 'Saved!'})
def test_func(self):
return True
Когда форма показывается конечному пользователю, начальное значение (template_R1.objects.all().first().template) правильно отображается конечному пользователю. Однако при редактировании это отредактированное значение не сохраняется в базе данных. База данных сохраняет только начальное значение, но не отредактированную версию начального значения.
Модель базы данных определяется следующим образом:
class R1(models.Model):
candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE)
interview_date = models.DateField(default=timezone.now)
interviewers = models.ManyToManyField(User, blank=False)
feedback = RichTextField(null=True)
comment = models.TextField(null=True, blank=True)
recommended_level = models.ForeignKey(Rank, on_delete=models.SET_NULL, null=True)
progress = models.CharField(choices=[('PROGRESS', 'Progress'),('REJECT', 'Reject')], default='PROGRESS', max_length=28, null=True)
Шаблон url для представления create определяется следующим образом:
path('r1s/create/<int:candidate>', views.R1CreateView.as_view(), name="r1s-create"),