django model on_delete讲解
时间: 2024-09-25 07:10:24 浏览: 48
PyPI 官网下载 | django_model_event_actions-1.0.1-py3-none-any.whl
在Django模型中,`on_delete`选项用于设置当外键关联的对象被删除时的行为。它主要用于管理数据库表之间的引用完整性。`on_delete`可以接受以下几个预定义的常量:
1. `models.CASCADE` (默认): 当关联的对象被删除时,会自动删除依赖它的所有对象。这是最常见的选择,表示级联删除。
2. `models.SET_NULL`: 删除外键关联的对象时,将外键设为None,如果该字段允许NULL值。
3. `models.PROTECT`: 阻止删除操作,如果该外键被其他对象引用,则不能删除关联的对象。
4. `models.DO_NOTHING`: 保持外键关联不变,不做任何处理。
举个例子,在设置模型关系时,可以这样应用`on_delete`策略[^1]:
```python
from django.db import models
class ParentModel(models.Model):
name = models.CharField(max_length=50)
class ChildModel(models.Model):
parent = models.ForeignKey(ParentModel, on_delete=models.CASCADE)
# 如果你想在删除Parent时将Child设为None,可以使用SET_NULL
# parent = models.ForeignKey(ParentModel, on_delete=models.SET_NULL, null=True)
# 或者如果你想阻止删除有子类的Parent,可以使用PROTECT
# parent = models.ForeignKey(ParentModel, on_delete=models.PROTECT)
```
阅读全文