Обновить данные

У меня есть код HTML, который отвечает за обновление данных о сотруднике. Бокс первый (смотреть фото), который представлен текстовым полем, обновляет данные. Но бокс второй и третий, в котором представлены данные в виде выпадающего списка (данные берутся из модели) не обновляет изменённые данные.

Для удобства код:

<form method="POST">
    {% csrf_token %}
    <p>
        <label>Введите имя</label><br>
        <input type="text" name="name" value="{{person.name}}" />
    </p>

    <p>
        <label>Введите отдел</label><br>
        <select>
            {% for key in dep %}
               <option value="{{ key }}">{{ key }}</option>
            {% endfor %}
        </select>
    </p>

    <p>
        <label>Введите должность</label><br>
        <select>
            {% for key in pos %}
               <option value="{{ key }}">{{ key }}</option>
            {% endfor %}
        </select>
    </p>


    <input type="submit" value="Сохранить" >
</form>

И фото для наглядности введите сюда описание изображения введите сюда описание изображения

views.py

def edit(request, id):
try:
    person = Employee.objects.get(id=id)
    dep = Department.objects.all()
    pos = Position.objects.all()

    if request.method == "POST":
        person.name = request.POST.get("name")
        person.save()
        return redirect("base")
    else:
        return render(request, "manager_employees/edit.html", {"person": person,
                                                               'dep': dep,
                                                               'pos': pos})
except Employee.DoesNotExist:
    return HttpResponseNotFound("<h2>Person not found</h2>")

Что мне надо дописать, что бы данные сохранялись?


Ответы (1 шт):

Автор решения: Vadim.Sharoikin

ну смотри. Ты получаешь значение с инпута по name. Тебе надо дабавить в html

<form method="POST">
    {% csrf_token %}
    <p>
        <label>Введите имя</label><br>
        <input type="text" name="name" value="{{person.name}}" />
    </p>

    <p>
        <label>Введите отдел</label><br>
        <select name='select1'>
            {% for key in dep %}
               <option value="{{ key }}">{{ key }}</option>
            {% endfor %}
        </select>
    </p>

    <p>
        <label>Введите должность</label><br>
        <select  name='select2'>
            {% for key in pos %}
               <option value="{{ key }}">{{ key }}</option>
            {% endfor %}
        </select>
    </p>


    <input type="submit" value="Сохранить" >
</form>

к select name. и дальше их получить также как с инпута

person.select1 = request.POST.get("select1")
person.select2 = request.POST.get("select2")

и сохранить их в модель. Также как было сделано тут

person.name = request.POST.get("name")
→ Ссылка