2017-01-17 1 views
0

Мне нужна помощь с MongoAlchemy. Я пытаюсь создать веб-приложение с python, фляжкой, Mongo DM и Mongo Alchemy (как картографист документа объекта), и я борюсь с обновлением существующих документов.Обновить Существующий документ: Mongo Alchemy

Моя проблема заключается в том, что я не могу обновить существующий документ через его идентификатор объекта. Ниже Я прилагаю мое размораживание для обновления

@app.route('/update', methods =[ 'GET', 'POST' ])  
def update(): 
    if request.method == 'POST': 
     id = request.form['object_id'] # Getting values with html 
     patientzero = BloodDoonor.query.get_or_404(id) 
     first_name = request.form['name']# Getting values with htmlform 
     last_name = request.form['surname']# Getting values with html form 
     blood_type = request.form['blood_type']# Getting values with html     
     update_record = BloodDoonor.patientzero.update(BloodDoonor.last_name = last_name) 
    return render_template('update.html', result = result) 

И колбы дает мне эту ошибку:

AttributeError AttributeError: type object 'BloodDoonor' has no attribute 'patientzero'

Я новичок в Python и не очень хорошо в коде. Пожалуйста, простите меня за небрежное описание, которое я дал выше. Любая помощь будет оценена по достоинству.

+0

просто попробовать 'update_record = patientzero.update (BloodDoonor.last_name = last_name) ' – Crazyshezy

ответ

1

Чтобы обновить существующий документ просто изменить значение объекта, который вы запросили от БД со значениями формы, а затем просто сохранить этот объект:

@app.route('/update', methods =[ 'GET', 'POST' ]) 
def update(): 
    if request.method == 'POST': 
     id = request.form['object_id'] 
     patientzero = BloodDoonor.query.get_or_404(id) 
     patientzero.first_name = request.form['name'] 
     patientzero.last_name = request.form['surname'] 
     patientzero.blood_type = request.form['blood_type'] 

     patientzero.save() 
    return render_template('update.html') 
+0

Когда я пытаюсь запустить этот код, Flask дает мне следующую ошибку: UnboundLocalError: локальная переменная 'patientzero', на которую ссылается перед назначением – alpha93

+0

Я обновляю свой ответ. Ошибка была в отступе. Попробуйте сейчас – metmirr

+0

Он работает, спасибо вам, сэр! – alpha93