✅ پارامتر on_delete که توی تعریف یک رابطه (relationship) در مدل ها استفاده میشه، نحوه رفتار سیستم در مواقع حذف یک شی مرتبط با شی دیگه رو مشخص میکنه.
⚠️قرارداد: توی این متن به جدول اصلی میگم پدر. به جدول خارجی میگم فرزند.
احتمالا با مقدار on_delete=models.CASCADE آشنا هستید. وقتی که CASCADE باشه. اگر پدر رو حذف کنیم همه فرزندانش هم حذف میشن.
✔️اما مقدار on_delete = protected (توی جنگو) به معنای اینه: در صورتی که پدر بخواد حذف بشه و فرزندی داشته باشه، یک خطای ProtectedError ایجاد میشه. در واقع این حالت اجازه نمیده پدری که فرزند حذف نشده داره، حذف بشه.