i recentry started to learn programing, and i run into issue. Im using flask wtffroms and just want to create a delete route, every time i try to delete my post i geting this error
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: prekes_nuotraukos.preke_id
[SQL: UPDATE prekes_nuotraukos SET preke_id=? WHERE prekes_nuotraukos.id = ?]
[parameters: ((None, 20), (None, 21), (None, 22), (None, 23))]
(Background on this error at: http://sqlalche.me/e/13/gkpj)
i think the problem is that i use one wtfform variables for 2 sqlalchemy tables and it cant find prekes_nuotraukos.id because its in different table or i missing something. This is my model.db
class Preke(db.Model):
id = db.Column(db.Integer, primary_key=True)
pavadinimas = db.Column(db.String(30), nullable=False)
apibudinimas = db.Column(db.String(80), nullable=False)
creation_time = db.Column(db.DateTime, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
items = db.relationship("PrekesNuotraukos", backref="PrekesFT", lazy=True, uselist=True)
def __repr__(self):
return f"Post('{self.pavadinimas}', '{self.apibudinimas}', {self.creation_time})"
class PrekesNuotraukos(db.Model):
id = db.Column(db.Integer, primary_key=True)
prekes_nuotraukos = db.Column(db.String(20), nullable=False)
creation_time = db.Column(db.DateTime, default=datetime.utcnow)
preke_id = db.Column(db.Integer, db.ForeignKey("preke.id"), nullable=False)
def __repr__(self):
return f"Post('{self.creation_time}, {self.prekes_nuotraukos})"
and code for front end portion
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<form action="{{url_for('delete_Preke', p_id=preke.id)}}" method="post">
<input class="btn btn-danger" type="submit" value="Delete">
</form>
code for routing:
@app.route("/app_main_page/preke/<int:p_id>/delete", methods=["POST"])
@login_required
def delete_Preke(p_id):
preke = Preke.query.get_or_404(p_id)
if preke.author != current_user:
abort(403)
db.session.delete(preke)
db.session.commit()
flash("Jusu preke buvo sekmingai istrinta", "success")
return redirect(url_for(visos_prekes))