Django: Установите для поля выпадающей формы значение из модели текущего представления детализации
У меня есть небольшая Django-форма, которая позволяет мне изменять стадию оценки. Это используется персоналом, чтобы держать пользователя и других сотрудников в курсе того, на каком этапе они находятся.
В настоящее время я просто загружаю опцию по умолчанию как то, что я установил по умолчанию в модели ("NEW"), я бы предпочел, чтобы вместо этого выбиралась опция, на которую настроена текущая модель страницы просмотра деталей, например, ("IN PROGRESS"). Скриншот ниже - это то, что отображается в настоящее время.
Итак, если этап находится в стадии выполнения, то при загрузке страницы я бы хотел, чтобы этот выпадающий параметр уже был выбран "In Progress".
Есть ли какой-нибудь способ либо в настройках виджета формы, либо в html шаблоне, либо в Javascript, чтобы сделать это изменение?
Forms.py
class ChangeStageForm(ModelForm):
class Meta:
model = Assessment
fields = ['assessment_stage', ]
labels = {
'assessment_stage': _('Change Assessment Stage'),
}
Модельное поле с вариантами
ASSESSMENT_STAGE_CHOICES = [
('NEW', 'New'),
('INPRO', 'In Progress'),
('WAIT', 'Waiting on Applicant'),
('CAN', 'Cancelled'),
('DEC', 'Declined'),
('COMP', 'Completed'),
]
assessment_stage = models.CharField(max_length=21, choices=ASSESSMENT_STAGE_CHOICES, default='NEW')
Шаблон HTML
Assessment Stage: {{ assessment.get_assessment_stage_display }}
<form method="POST">
{% csrf_token %}
{{ change_stage_form }}
<button type="submit" name="change_stage" class="btn btn-success">Save</button>
</form>
Нашел ответ после публикации. Для тех, кто еще ищет ответ.
При создании нового экземпляра формы (в моем случае в get_context_data моего класса detail view) используйте параметр initial:
context['change_stage_form'] = ChangeStageForm(initial={
'assessment_stage': self.object.assessment_stage
})
Django Forms Docs: https://docs.djangoproject.com/en/dev/ref/forms/api/#initial-form-values
