Почему индивидуально отображаемые поля формы не публикуются в Django?
У меня есть UpdateView, основанный на классе, который работает нормально, если я отображаю форму как {{ form.as_p }}
. Он обновляет значения, но выглядит плохо.
Если я пытаюсь вывести поля по отдельности, то значения не обновляются.
Я не могу понять, как это исправить, я не очень хорошо знаком с представлениями на основе классов. Я не думаю, что это ошибка валидации (я не знаю, как проверить это в представлениях, основанных на классах), потому что {{ form.as_p }}
работает хорошо.
Заранее спасибо, если кто-то сможет мне помочь!
models.py
class LeaderFeedback(models.Model):
def __str__(self):
return str(self.employee)
employee = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name="employed")
leader = models.ForeignKey(User, on_delete=models.CASCADE, related_name="employer_leader")
goals01 = models.CharField(max_length=100, null=True, blank=True)
goals01_deadline = models.CharField(max_length=30, null=True, blank=True)
goals01_value = models.IntegerField(null=True, blank=True)
leader_comment = models.CharField(max_length=500, null=True, blank=True)
views.py
class UpdateLeaderFeedbackView(SuccessMessageMixin, UpdateView):
model = LeaderFeedback
form_class = PeriodicLeaderFeedbackForm
template_name = 'performance/periodic/leader_feedback_edit.html
<
class Meta:
model = LeaderFeedback
fields = '__all__'
goals_value =(
(1, "Nem teljesült"),
(2, "Részben teljesült"),
(3, "Megfelelő"),
(4, "Maximálisan teljesült"),
)
widgets = {
'goals01_value': forms.RadioSelect(choices=goals_value),
'leader_comment': forms.Textarea(attrs={"rows":"3", 'class': 'form-control'}),
forms.py
app_name = 'performance'
urlpatterns = [
...
path('periodic/leader_feedback_edit/<pk>', login_required(UpdateLeaderFeedbackView.as_view()), name='update_leaderfeedback'),
...
leader_feedback_edit.html
<form method="POST">
{% csrf_token %}
<div class="card shadow p-2 my-2">
<div class="row">
<div class="col-md-5">
<h6 class="">Cél 1:</h6>
{{ object.goals01 }}
</div>
<div class="col-md-3">
<h6 class="">Kitűzött határidő:</h6>
{{ object.goals01_deadline }}
</div>
<div class="col-md-4">
<h6 class="">Értékelés:</h6>
{{ form.goals01_value }}
</div>
{{ form.leader_comment }}
</div>
<input type="submit" value="submit" class="btn btn-info my-3"></input>
</div>
</form>
Во-первых, необходимо включить в форму HTML теги. Также необходимо позаботиться о csrf_token.
<form method="post">
{% csrf_token %}
<div class="card shadow p-2 my-2">
<div class="row">
<div class="col-md-5">
<h6 class="">Cél 1:</h6>
{{ object.goals01 }}
</div>
<div class="col-md-3">
<h6 class="">Kitűzött határidő:</h6>
{{ object.goals01_deadline }}
</div>
<div class="col-md-4">
<h6 class="">Értékelés:</h6>
{{ form.goals01_value }}
</div>
{{ form.leader_comment }}
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>