Django: Установите для поля выпадающей формы значение из модели текущего представления детализации

У меня есть небольшая Django-форма, которая позволяет мне изменять стадию оценки. Это используется персоналом, чтобы держать пользователя и других сотрудников в курсе того, на каком этапе они находятся.

В настоящее время я просто загружаю опцию по умолчанию как то, что я установил по умолчанию в модели ("NEW"), я бы предпочел, чтобы вместо этого выбиралась опция, на которую настроена текущая модель страницы просмотра деталей, например, ("IN PROGRESS"). Скриншот ниже - это то, что отображается в настоящее время.

enter image description here

Итак, если этап находится в стадии выполнения, то при загрузке страницы я бы хотел, чтобы этот выпадающий параметр уже был выбран "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

Спасибо: https://stackoverflow.com/a/813474/16395136

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