problem with updating an object from sqlalchemy

Viewed 36

I'm trying to update an object but nothing happening!!! I want to update "Barname.sender" after doing that and flashing successfully if I check it again it has exact old version of its and nothing changed this is my code home.html:

<h1 align = "center">NOTES<h1>

<ul class = "list-group list-group-flush" id = "notes">

{% for bars in user.barnames  %}
<li class = "list-group-item">

<h1 name="barnameId" id="barnameId" >  {{ bars.data }} </h1>
   
 <form method="POST"> 
     <div align="right">
         <a href="/update/{{bars.id}}">
          <input type="button" class = "btn btn-primary" value="update" />
         
         </a>
          
         <a href="/delete/{{bars.id}}">
          <input type="button" class = "btn btn-primary" value="delete" /></a>
     </div>    
  </form>  
     </li>

{% endfor %}

this is part of my model :

class Barname(db.Model):
    
    __tablename__ = "barnamees"
    
    
    
    id = db.Column(db.Integer, primary_key=True)
    data = db.Column(db.String(10000))
    date = db.Column(db.String(10000))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    sender = db.Column(db.String(150))

    def __repr__(self):
         return ("<Task %r>" % self.id)

class User (db.Model , UserMixin):
    id = db.Column(db.Integer , primary_key = True)
    name = db.Column(db.String(150) , unique = True)
    password = db.Column(db.String(150))
    barnames = db.relationship("Barname")

this is my update model :

@views.route("/update/<int:id>" , methods = ["POST" , "GET"])
@login_required
def update(id):
    bars = Barname.query.get_or_404(id)
    if request.method == "POST" :
        bars.sender= request.form["sender"]
        try :
            db.session.commit()
            flash("update succesfully", category = "success")
            return render_template("/home.html" , user = current_user ,bars=bars )
        except :
            flash("something went wrong" , category = "error")
            return render_template("/update.html" , user = current_user ,bars=bars )
    else :
        flash("method was not post" , category = "error")
        
        return render_template("/update.html" , user = current_user ,bars=bars )
1 Answers

You need to add the updated object to the session before you commit it.

bars = Barname.query.get_or_404(id)
bars.sender= request.form["sender"]
db.session.add(bars)
db.session.commit()
Related