как отобразить уже выбранную опцию в выпадающем списке при обновлении формы - PullRequest
0 голосов
/ 25 апреля 2019

как я могу отобразить уже выбранного учителя в опции выбора в первую очередь при обновлении моих данных с помощью форм

models.py

    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)

просмотров.py

    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>

1 Ответ

1 голос
/ 25 апреля 2019

Вы сравниваете 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...