在提交之前检查外键约束

时间:2015-04-27 07:49:08

标签: flask sqlalchemy

在提交之前有没有办法检查外键约束?我知道的唯一方法就是抓住sqlite3.IntegrityError

我有一个使用Flask-SQLAlchemy的Flask应用程序。其中一个表具有外键约束。如果删除外键引用的行,则引发IntegrityError。我想给用户更好的反馈。是否可以找出要显示的链接行?

1 个答案:

答案 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 %}