提交前检查外键约束

Check foreign key constraint before committing

有什么方法可以在提交前检查外键约束吗?我知道的唯一方法是赶上 sqlite3.IntegrityError.

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

您可以处理错误:

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