Обновить данные
У меня есть код 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")

