如何在更新表单时在下拉列表中显示已选择的选项

问题描述 投票:0回答:2

如何在通过表单更新数据时首先在选择选项中显示已选择的教师

models.朋友

    class TeacherSalary(models.Model):
        name = models.ForeignKey(Teacher,on_delete=CASCADE)
        total_num_of_students = models.IntegerField(default=0)
        fee_per_student = models.IntegerField(default=0)
        total_fee = models.IntegerField(default=0)
        percent_for_teacher = models.FloatField(default=0.0)
        salary = models.IntegerField(default=0)

views.朋友

    def editteachersalary(request,id):
        if not request.user.is_superuser:
            messages.info(request, 'You have to logged in first as a admin')
            return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
        teachers = Teacher.objects.all()
        teacher = TeacherSalary.objects.get(id=id)
        # for teacher1 in teachers:
        #     if teacher1.id == teacher.id and teacher1.name == teacher.name:
        #         selected_option = True
        return render(request, 'students/edit_teacher_salary.html', {'teacher': teacher,'teachers':teachers})

编辑模板

        <div class="form-group">
            <h5>Teacher <span class="text-danger">*</span></h5>
            <div class="controls">
                <select name="name" id="select" required class="form-control">
                    {% for teacher1 in teachers %}
                        <option value="{{teacher1.id}}" {%  if teacher1.id == teacher.id and teacher1.name == teacher.name %} selected="selected"{% endif %}>{{teacher1.name}}
                         </option>
                    {% endfor %}
                </select>
            </div>
        </div>
django
2个回答
2
投票
 {% for teacher1 in teachers %}
   <option value="{{ teacher1.id }}" 
{% if teacher1.id== teacher.name_id %}
selected {% endif %}>
 {{ teacher1.name }}
</option>
{% endfor %}

1
投票

您正在比较TeacherTeacherSalary实例。你应该将teachers的每个项目与teacher.name而不是teacher进行比较。

{% for teacher1 in teachers %}
  <option value="{{ teacher1.id }}" {% if teacher1 == teacher.name %} selected {% endif %}>
    {{ teacher1.name }}
  </option>
{% endfor %}

或者你可以将teacher = TeacherSalary.objects.get(id=id)改为teacher = TeacherSalary.objects.get(id=id).name

© www.soinside.com 2019 - 2024. All rights reserved.