This example shows three models using different on_delete options to control what happens when related objects are deleted.
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
class Category(models.Model):
name = models.CharField(max_length=100)
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.PROTECT)
class Profile(models.Model):
user_name = models.CharField(max_length=100)
class Comment(models.Model):
content = models.TextField()
profile = models.ForeignKey(Profile, on_delete=models.SET_NULL, null=True)
# Explanation:
# Deleting an Author deletes their Books (CASCADE).
# Deleting a Category is blocked if Products use it (PROTECT).
# Deleting a Profile sets Comment.profile to null (SET_NULL).