如何在通过表单更新数据时首先在选择选项中显示已选择的教师
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>
{% for teacher1 in teachers %}
<option value="{{ teacher1.id }}"
{% if teacher1.id== teacher.name_id %}
selected {% endif %}>
{{ teacher1.name }}
</option>
{% endfor %}
您正在比较Teacher
和TeacherSalary
实例。你应该将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
。