sql >> Database >  >> RDS >> Mysql

Een Flask-SQLAlchemy-update creëert een nieuw record in MySQL

Oké, dus bedankt aan Daniel en Doobeh om me in de goede richting te wijzen. Eigenlijk kwam het erop neer dat ik de blog_id niet correct aanvroeg in de POST-methode van edit_entry. Hier is de nieuwe (en werkende) code.

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)

Er waren uiteindelijk twee grote problemen. Fist was een vergissing:toen ik de edit_entry-sjabloon kopieerde van de new_entry-sjabloon, vergat ik de actie van het formulier te wijzigen, dus het formulier postte eigenlijk naar de nieuwe_invoerroute, dus de duplicatie. Nadat ik dat probleem had gevonden, realiseerde ik me ook dat hoewel blog_id in request.args werd doorgegeven aan de 'GET'-methode, het niet werd doorgegeven in de 'POST'-methode (aangezien de post niet afkomstig was van de omleiding), dus Ik heb eigenlijk een nieuw veld gemaakt in de edit_entry-sjabloon om de blog_id terug te sturen naar POST.




  1. ORACLE Connect by clausule equivalent in SQL Server

  2. Hoe waarden uit JSON te selecteren in mysql

  3. SSMS 2016-fout bij het importeren van Azure SQL v12 bacpac:hoofdsleutels zonder wachtwoord niet ondersteund

  4. script om mysql dump sql-bestand te converteren naar een formaat dat kan worden geïmporteerd in sqlite3 db