django项目 orm中外键的定义方式
时间: 2023-09-08 08:09:58 浏览: 88
django foreignkey(外键)的实现
在 Django ORM 中,外键是通过 ForeignKey 类型来定义的。ForeignKey 类型的语法如下:
```python
ForeignKey(to, on_delete, [related_name=related_name_value, ...])
```
其中,to 参数表示外键所指向的模型,可以是一个模型类,也可以是一个字符串形式的模型名称;on_delete 参数表示在关联对象被删除时的处理方式,可以是以下几种取值:
- models.CASCADE:删除关联对象的同时,也删除包含该对象的所有对象。
- models.PROTECT:防止删除关联对象,如果尝试删除关联对象,则抛出 ProtectedError 异常。
- models.SET_NULL:将包含该对象的所有对象的外键设置为 NULL。
- models.SET_DEFAULT:将包含该对象的所有对象的外键设置为默认值。
- models.SET():将包含该对象的所有对象的外键设置为指定的值。
related_name 参数用于定义反向关系的名称,可以让你在关联对象的模型中方便地访问包含该对象的所有对象。如果没有指定该参数,则默认使用模型名称加上 "_set" 作为反向关系的名称。
下面是一个例子,假设你有一个 Book 模型和一个 Author 模型,你可以在 Book 模型中定义一个外键指向 Author 模型,代码如下:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=50)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
```
上述代码中,Book 模型中的 author 字段是一个 ForeignKey 类型,指向 Author 模型的主键。on_delete=models.CASCADE 表示如果关联的 Author 记录被删除,则相应的 Book 记录也会被删除。
这就是 Django ORM 中外键的定义方式,希望能对你有所帮助。
阅读全文