مدل جنگو

فرق بین on_delete_CASCADE و on_delete_SETNULL توی ForeignKey در مدل جنگو چیه ؟؟

اولی وقتی رکردی که بهش اشاره کردید از توی تیبل اول پاک شه رکورد فعلی رو هم پاک می کنه. دومی مقدار فیلد forein key رو به null تغییر میده

3 Likes
**This is the behaviour to adopt when the referenced object is deleted. It is not specific to django, this is an SQL standard.*

CASCADE: When the referenced object is deleted, also delete the objects that have references to it (When you remove a blog post for instance, you might want to delete comments as well). SQL equivalent: CASCADE.
PROTECT: Forbid the deletion of the referenced object. To delete it you will have to delete all objects that reference it manually. SQL equivalent: RESTRICT.
SET_NULL: Set the reference to NULL (requires the field to be nullable). For instance, when you delete a User, you might want to keep the comments he posted on blog posts, but say it was posted by an anonymous (or deleted) user. SQL equivalent: SET NULL.
SET_DEFAULT: Set the default value. SQL equivalent: SET DEFAULT.
SET(...): Set a given value. This one is not part of the SQL standard and is entirely handled by Django.
DO_NOTHING: Probably a very bad idea since this would create integrity issues in your database (referencing an object that actually doesn't exist). SQL equivalent: NO ACTION.

در واقع ۶ متود برای اعمال بر روی رفرنسد در اختیار دارید که براساس استاندارد sql هستن . توصیحات در بالا موجود هست