Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Bản cập nhật Flask-SQLAlchemy đang tạo một bản ghi mới trong MySQL

Được rồi, cảm ơn Daniel và Doobeh đã chỉ cho tôi đúng hướng. Về cơ bản, tôi không yêu cầu đúng blog_id trong phương thức POST của edit_entry. Đây là mã mới (và đang hoạt động).

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)

Cuối cùng có hai vấn đề lớn. Fist là một sự giám sát:khi tôi sao chép mẫu edit_entry từ mẫu new_entry, tôi đã quên thay đổi hành động của biểu mẫu, vì vậy biểu mẫu thực sự đang đăng lên tuyến new_entry, do đó sẽ bị trùng lặp. Sau khi tôi phát hiện ra vấn đề đó, tôi cũng nhận ra rằng mặc dù blog_id đã được chuyển trong request.args đến phương thức 'GET', nó không được chuyển trong phương thức 'POST' (vì bài đăng không đến từ chuyển hướng), vì vậy Tôi thực sự đã tạo một trường mới trong mẫu edit_entry để chuyển blog_id trở lại 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. Quay lại sao chép truyền thống từ GTID

  2. Di chuyển từ MySQL sang PostgreSQL trên Linux (Kubuntu)

  3. Cập nhật chế độ SQL trong MySQL

  4. Cột không xác định trong 'danh sách trường', nhưng cột tồn tại

  5. MySQL Row 30153 đã bị cắt bởi lỗi GROUP_CONCAT ()