Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализация на Flask-SQLAlchemy създава нов запис в MySQL

Добре, така че благодаря на Daniel и Doobeh, че ме насочиха в правилните посоки. По принцип се стигна до това, че не съм поискал правилно blog_id в метода POST на edit_entry. Ето новия (и работещ) код.

def edit_entry():
    form = BlogEntry()
    if request.method == 'POST':
        blog_id = request.form.get('blog_id')
        update = db.session.query(models.Blog).filter_by(id = blog_id).update({
             'title': request.form.get('title'),
             'content': request.form.get('content')
        })
        db.session.commit()
        return redirect(url_for('blog'))
    elif request.method == 'GET':
        blog_id = int(request.args['blog_id'])
        post = models.Blog.query.filter_by(id = blog_id).first_or_404()
        context = {
            'copyright': COPYRIGHT,
            'form': form,
            'blog_id': blog_id
        }
        form.title.data = post.title
        form.content.data = post.content
        return render_template('edit_entry.html', **context)

В крайна сметка има два основни проблема. Юмрук беше пропуск:когато копирах шаблона edit_entry от шаблона new_entry, забравих да променя действието на формуляра, така че формулярът всъщност публикуваше към маршрута new_entry, по този начин дублирането. След като открих този проблем, разбрах също, че докато blog_id беше предаден в request.args към метода 'GET', той не се предаваше в метода 'POST' (тъй като публикацията не идваше от пренасочването), така че Всъщност създадох ново поле в шаблона edit_entry, за да предам blog_id обратно на POST.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с MySQL актуализиране на поле DATETIME от ISO 8601 формат

  2. Грешка:Изглежда, че във вашата PHP инсталация липсва разширението MySQL, което се изисква от WordPress

  3. varchar(20) и varchar(50) са еднакви?

  4. Преобразувайте релсите за повиквания за запис/актуализация в sql

  5. MySQL грешка № 121