在提交之前有没有办法检查外键约束?我知道的唯一方法就是抓住sqlite3.IntegrityError
。
我有一个使用Flask-SQLAlchemy的Flask应用程序。其中一个表具有外键约束。如果删除外键引用的行,则引发IntegrityError
。我想给用户更好的反馈。是否可以找出要显示的链接行?
答案 0 :(得分:2)
您可以处理错误:
try:
db.session.commit()
except IntegrityError:
return render_template('error.html', msg="You can't delete this!")
甚至包含导致错误的行的信息:
post = Post.query.get(123) # object we are trying to delete
comments = post.comments # foreign key preventing deletion
return render_template('error.html', msg="You can't delete this!", comments=comments)
在你的模板中:
<p>Delete these comments first:</p>
{% for comment in comments %}
{{ comment.text }}
{% endfor %}