对django 2.x版本中models.ForeignKey()外键说明介绍

1. 介绍

在Django中,我们可以通过使用外键来建立数据表之间的关联关系。而在Django 2.x版本中,使用models.ForeignKey()方法来定义外键字段。本文将详细介绍Django 2.x版本中models.ForeignKey()方法的用法和一些重要的参数。

2. models.ForeignKey()方法

2.1 用法

models.ForeignKey()方法用于定义一个外键字段,指向另一个模型(即数据表)。这个外键字段会在数据库中生成一个实际的列,用于存储关联模型的主键。通过定义外键字段,我们可以在模型之间建立关联,实现数据的一对一、一对多和多对多的关系。

下面是一个示例:

from django.db import models

class Author(models.Model):

name = models.CharField(max_length=100)

class Book(models.Model):

title = models.CharField(max_length=200)

author = models.ForeignKey(Author, on_delete=models.CASCADE)

在上面的例子中,Book模型通过定义author字段与Author模型建立了一对多的关系。

2.2 参数详解

models.ForeignKey()方法有一些重要的参数:

2.2.1 第一个参数to

to参数指定了外键指向的模型类。可以使用字符串形式指定模型类,也可以使用模型类本身。

author = models.ForeignKey('Author', on_delete=models.CASCADE)

或者

author = models.ForeignKey(Author, on_delete=models.CASCADE)

上述两种写法都是等效的。

2.2.2 on_delete参数

on_delete参数指定了当被关联的对象被删除时,外键字段的行为。常见的取值有:

models.CASCADE:级联删除,删除被关联的对象时,也会删除包含该外键的对象。

models.PROTECT:保护模式,如果被关联的对象被删除,将抛出ProtectedError。

models.SET_NULL:设置为NULL,被关联的对象被删除后,外键字段将被设置为NULL。

author = models.ForeignKey(Author, on_delete=models.CASCADE)

以上代码示例中,指定了当Author对象被删除时,与其相对应的Book对象也会被级联删除。

2.2.3 related_name参数

related_name参数用于从关联的对象反向查询时,指定对象的名称。

class Book(models.Model):

title = models.CharField(max_length=200)

author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')

在上述代码中,通过设置related_name='books',我们可以通过Author对象反向查询其对应的Book对象。

3. 总结

通过使用models.ForeignKey()方法,我们可以在Django中很方便地建立数据表之间的关联关系。本文介绍了models.ForeignKey()方法的基本用法以及重要的参数,包括to参数、on_delete参数和related_name参数。

对于开发者来说,熟练掌握models.ForeignKey()方法的使用是十分重要的,可以帮助我们构建复杂的数据库关联关系,从而更好地组织和管理数据。

后端开发标签