Я хочу обновить в базе данных python - flask, я написал код для редактирования, но я не получаю никаких ошибок, но после изменения значение остается прежним - PullRequest
0 голосов
/ 04 августа 2020

Я написал код для обновления, я получаю значение редактирования по автозаполнению. Когда меняю ценность чего-то и выкладываю. Ошибка не отображается, и таблица обновляется. Он по-прежнему показывает предыдущие значения.

app.route('/employee/edit/<int:id>', methods=['GET','POST'])
def edit(id):
employee = Employee.query.get_or_404(id)
if request.method == 'POST':
    emp_name = request.form['emp_name']
    emp_dob = datetime.strptime(request.form['emp_dob'], '%Y-%m-%d')
    emp_sal = request.form['emp_sal']
    emp_rel = request.form['emp_rel']
    print(emp_name,emp_dob,emp_sal,emp_rel)
    db.session.commit()
    return redirect('/employee')

return render_template('edit.html', employee=employee)

Вот редактирование. html

{% extends 'base.html' %}

{% block head %}

<title> Edit Employee </title>

{% endblock %}

{% block body %}

<h2>Edit Employee</h2>
    <form action="/employee/edit/{{employee.id}}" method="POST" enctype="multipart/form-data">

        Employee Name: <input type="text" name="emp_name" id="emp_name" value="{{employee.emp_name}}" required>
        <br>
        <br>
        Dob: <input type="date" name="emp_dob" id="emp_dob" placeholder="YYYY-DD-MM" value="{{employee.emp_dob}}">
        <br>
        <br>
        Religion: <input type="text" name="emp_rel" id="emp_rel" value="{{employee.emp_rel}}">
        <br>
        <br>
        Salary: <input type="number" name="emp_sal" id="emp_sal" value="{{employee.emp_sal}}" required >
        <br>
        <br>
        <button type="submit" value="save employee"> Save Employee </button>

    </form>

{% endblock %}

Я не понимаю, где сделал ошибку.

1 Ответ

0 голосов
/ 04 августа 2020

Вы никогда не пишете в базу данных. Вы записываете свои новые значения в локальные переменные вместо обновления экземпляра Employee. Попробуйте вместо этого:

@app.route('/employee/edit/<int:id>', methods=['GET','POST'])
def edit(id):
    employee = Employee.query.get_or_404(id)
    if request.method == 'POST':
        employee.name = request.form['emp_name']
        employee.dob = datetime.strptime(request.form['emp_dob'], '%Y-%m-%d')
        employee.salary = request.form['emp_sal']
        employee.rel = request.form['emp_rel']
        db.session.commit()
        return redirect('/employee')
    return render_template('edit.html', employee=employee)
...