изменить значение формы после нажатия кнопки (джанго) - PullRequest
0 голосов
/ 01 июля 2019

У меня есть форма, в которой, когда я выбираю свой вариант и нажимаю кнопку «Выбрать», мне нужно обновить форму с данными выбранного объекта. Моя проблема в том, что когда я делаю свой статический объект, {% for%} уже помечает меня как ошибку, потому что это не список. Я не знаю, если это правильный способ сделать это.

Это работает Mysql, Django 1.11 и Python 2.7.15

views.py

def administrador(request):
    alumno = Alumnos.objects.all()
    mapa = mapas.objects.all()
    competencias = Competencias.objects.all()
    context = {
        'alumno': alumno,
        'mapa': mapa,
        'competencias': competencias
    }
    return render(request, 'competencias_app/competencias.html', context)

def seleccion(request):
    alumno = Alumnos.objects.get(pk=request.POST['Nombre'])
    context = {'alumno': alumno}
    return render(request, 'competencias_app/competencias.html', context)

competencias.html


 <form action="/seleccion" method="POST">
            {% csrf_token %}
            <div>
                <select id="carrera" name="Carrera">
                    <option value="1">TICS</option>
                    <option value="2">Carrera</option>
                    <option value="3">Carrera</option>
                    <option value="4">Carrera</option>
                    <option value="5">Carrera</option>
                </select>
            </div>

            <div>
                <select id="Alumno" name="Nombre">
                    {% for alumno in alumno %}
                    <option value="{{alumno.idAlumnos}}">{{alumno.nombre}}</option>
                    {% endfor %}
                    <input type="submit" name="Seleccionar">

                </select>
            </div>
            <label for="ID">ID</label>
            <input type="input" name="id" disabled value="{{alumno.idAlumnos}}"><br>
            <label for="apellidos">Apellidos</label>
            <input type="input" name="apellidos" disabled value="{{alumno.apellidos}}"><br>
            <label for="Correo">Correo</label>
            <input type="input" name="Correo" disabled value="{{alumno.correo}}"><br>

        </form>

выход при нажатии «seleccionar» составляет

Способ запроса: POST URL запроса: http://localhost:8000/seleccion Джанго Версия: 1.11.21 Тип исключения: TypeError Значение исключения:
Объект 'Alumnos' не повторяется

Изображения для более подробной информации

1 Ответ

0 голосов
/ 01 июля 2019

Я решаю свою проблему с одним, если, я не знаю, правильное ли решение, но работает!

компетенция.html

 <form action="/seleccion" method="POST">
            {% csrf_token %}
            <div>
                <select id="carrera" name="Carrera">
                    <option value="1">TICS</option>
                    <option value="2">Carrera</option>
                    <option value="3">Carrera</option>
                    <option value="4">Carrera</option>
                    <option value="5">Carrera</option>
                </select>
            </div>

            <div>
                <select id="Alumno" name="Nombre">

                    {% if alumno|length > 1 %}
                    {% for alumno in alumno %}
                    <option value="{{alumno.idAlumnos}}">{{alumno.nombre}}</option>
                    {% endfor %}
                    {% else %}
                    <option value="{{alumno.idAlumnos}}">{{alumno.nombre}}</option>
                    {%endif%}

                    <input type="submit" name="Seleccionar">

                </select>
            </div>
            <label for="ID">ID</label>
            <input type="input" name="id" disabled value="{{alumno.idAlumnos}}"><br>
            <label for="apellidos">Apellidos</label>
            <input type="input" name="apellidos" disabled value="{{alumno.apellidos}}"><br>
            <label for="Correo">Correo</label>
            <input type="input" name="Correo" disabled value="{{alumno.correo}}"><br>

        </form>

views.py

def administrador(request):
    alumno = Alumnos.objects.all()
    mapa = mapas.objects.all()
    context = {
        'alumno': alumno
    }
    return render(request, 'competencias_app/competencias.html', context)

def seleccion(request):
     lstCompetencias = []
     alumno = Alumnos.objects.get(pk=request.POST['Nombre'])
     for p in Competencias.objects.raw('Select * from test_app_competencias where idmapasfk_id = %s', [request.POST['Nombre']]):
         lstCompetencias.append(p)
     context = { 
         'alumno' : alumno,
         'competencias' : lstCompetencias
        }

     return render(request, 'competencias_app/competencias.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...