Django模型中的on_delete属性具有如下选项:

CASCADE

级联删除,也就是被引用的实体被删除后,相关的记录信息都会被删除。

例如下面model例子和图片:

 
class Article(models.Model):
 # 标题
    title = models.CharField(max_length=200, blank=True)

class Comment(models.Model):
# 评论文章  # on_delete=models.CASCADE删除Article文章后可以把评论删除了
    article = models.ForeignKey(Article, on_delete=models.CASCADE, null=True)

PROTECT

阻止删除被引用的实体,除非先把所有引用的记录删除。抛出ProtectedError类

SET_NULL

把字段设置成null,但是必须允许为null的情况下。

SET_DEFAULT

把字段设置成默认值,这时这个字段必须设置了默认值。

SET()

可以传递一个函数给SET()方法作为参数,当字段引用的记录被删除后,此字段的值由给定的方法决定。

DO_NOTHING

什么都不做,保持之前的值。如果你的数据库后端设置了外键约束,那么就抛出一个IntegrityError。