Django:将下拉表单字段设置为当前详细视图模型中的值

Django: Set a dropdown form field to a value from the current detail view's Model

我有一个 Django 小窗体,可以让我更改评估的阶段。工作人员使用它来让用户和其他工作人员了解他们所在的位置。

目前,我只是加载默认选项作为我在模型中设置的默认选项(“新”),我更愿意这样 select 当前模型的选项详细视图页面实际上设置为,例如(“进行中”)。下面的屏幕截图是它当前显示的内容。

因此,如果该阶段在进行中,那么在页面加载时,我希望此下拉选项已经 select 编辑为“进行中”。

在表单小部件设置、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>

发帖后找到答案。对于其他寻找答案的人。

创建新表单实例时(在我的例子中,在我的详细视图 class 的 get_context_data 中)使用 initial 参数:

context['change_stage_form'] = ChangeStageForm(initial={
         'assessment_stage': self.object.assessment_stage
})

Django 表单文档:https://docs.djangoproject.com/en/dev/ref/forms/api/#initial-form-values

感谢您: