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
感谢您:
我有一个 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
感谢您: