0
在提交之前是否有任何方法檢查外鍵約束?我知道的唯一方法是趕上sqlite3.IntegrityError
。在提交之前檢查外鍵約束
我有一個使用Flask-SQLAlchemy的Flask應用程序。其中一個表具有外鍵約束。如果外鍵引用的行被刪除,則引發IntegrityError
。我想給用戶更好的反饋。是否有可能找出要顯示的鏈接行?
在提交之前是否有任何方法檢查外鍵約束?我知道的唯一方法是趕上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 %}
Thx爲您的答案,我選擇了兩種解決方案的組合:-) – tonka
假設有辦法檢查...並檢查,然後同時檢查一行後檢查,但在您提交之前,您的應用程序會是什麼重刑呢? – SingleNegationElimination