Django 模型基础知识:轻松理解数据库结构的完整指南

大家好!今天我们将学习 Django 模型的基础知识。 让我们从第一个 Django模型的概念似乎有点陌生和令人生畏--我知道对我来说确实如此。不过不用担心,这篇文章会让你彻底了解 Django 模型和数据库结构的基础知识。

Django 模型是数据库设计的核心--它是一种神奇的工具,可以让您使用 Python 代码操作数据库,而无需复杂的 SQL 查询。 在本篇文章中,我们将介绍关于 Django 模型的所有知识,从基本概念到实际代码示例。 那么,让我们开始吧!

什么是 Django 模型?

Django 模型将数据库结构作为 Python 类每个模型对应数据库中的一个表,模型的属性成为表中的字段。Django 使用该模型来抽象数据库操作,使开发人员更容易处理数据。

数据库结构(表和字段)


数据库表格一张举个例子。Excel 工作表有多行(行)和多列(列),对吗? 同样,表格中的数据也分为行(记录)和列(字段)。
- 行:代表单个数据。例如)在客户表中,一行代表一个客户的信息
- 列:代表数据的属性。例如)客户姓名、电子邮件和电话号码

字段每栏这意味着一个字段可以用作 属性特点字段。例如,如果要创建一个客户表,就需要这样的字段:ID、姓名、电子邮件、电话号码等。

Django 模型基础:创建第一个模型

Django models 기초 참고 이미지
(Django 模型基础知识参考图片 - 类和表格 )

现在,让我们实际创建一个 Django 模型。请看下面的代码,它创建了一个名为 "Book "的模型,用于创建一个存储和管理图书信息(章节标题、作者、出版日期、图书价格)的结构

从 django.db 导入模型

类 Book(models.Model):
    title = models.CharField(max_length=200)
    作者 = models.CharField(max_length=100)
    出版日期 = models.DateField()
    价格 = models.DecimalField(max_digits=6, decimal_places=2)

    def __str__(self):
        return self.title

代码评注

  1. 从 django.db 导入模型导入,以使用 Django 的模型功能。
  2. 类 Book(models.Model)定义一个名为 "图书 "的模型类。 模型.模型继承请回答。
  3. title = models.CharField(max_length=200)定义一个字符串字段,用于存储书名。最多可存储 200 个字符。
  4. 作者 = models.CharField(max_length=100)作者姓名:用于存储作者姓名的字段。最多可存储 100 个字符。
  5. publication_date = models.DateField()日期字段,用于存储出版日期。
  6. price = models.DecimalField(max_digits=6, decimal_places=2)用于存储价格的小数字段。最多可存储 6 位数字和 2 位小数。
  7. def __str__(self):该方法用于将模型实例表示为字符串。在这里,我们选择返回书名。

这就是一个基本的 Django 模型!它看起来很复杂,但当你把它组合在一起时,它并不难,不是吗? 如果你不明白,你会怎么做? 你就会说:"哦,这就是它。"然后你就会自然而然地了解它。

了解 Django 模型和数据库结构

Django 模型可以轻松定义数据库结构。 上述图书模型实际上在数据库中创建了以下表格

创建表 "books_book" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT、
    "标题" varchar(200) NOT NULL、
    "作者" varchar(100) NOT NULL、
    "出版日期 "日期 NOT NULL、
    "价格" decimal(6, 2) NOT NULL
);

代码评注

SQL 代码是将我们之前看到的 Django 模型转换为数据库表。 这段代码是一条 SQL 命令,用于创建名为 "books_book "的表。

  1. 表名:"books_book
    • 默认情况下,Django 通过组合应用程序名称和模型名称来创建表名。这里指的是 "书籍 "应用程序的 "书籍 "模型。
  2. 定义字段
    • "id":整数字段,是 PRIMARY KEY,具有 AUTOINCREMENT 属性。
    • "标题":长度可变的字符串(varchar)字段,最多 200 个字符。
    • "作者":长度可变的字符串,最多 100 个字符。
    • "出版日期":日期 (DATE) 类型字段。
    • "价格":小数字段,最多六位数,包括两位小数。
  3. 制约因素:
    • 所有字段都有禁止空值的 NOT NULL 约束。

如您所见,Django 模型会自动将 Python 代码转换为 SQL,这就是 Django 对象关系映射 (ORM) 的神奇之处!

Django 模型基础:设置关系

(Django 模型基础知识参考图片 - 设置关系 )

数据库中最重要的概念之一就是关系,而 Django 模型可以轻松地表示这些关系。

类 Publisher(models.Model):
    姓名 = models.CharField(max_length=200)
    地址 = models.CharField(max_length=200)

类 Book(models.Model):
    标题 = models.CharField(max_length=200)
    作者 = models.ForeignKey('Author', on_delete=models.CASCADE)
    出版商 = models.ForeignKey("Publisher", on_delete=models.SET_NULL, null=True)
    流派 = models.ManyToManyField('Genre')

代码评注

  1. author = models.ForeignKey('Author', on_delete=models.CASCADE)这是一对多(1:N)的关系:一个作者可以写多本书。 on_delete=models.CASCADE是指删除一个作者时,该作者的所有书籍也会被删除。
  2. Publisher = models.ForeignKey(Publisher, on_delete=models.SET_NULL, null=True)这也是一对多的关系:一个出版商可以出版多本书。 on_delete=models.SET_NULL表示如果删除了出版商,图书的出版商字段将设为 NULL(真)。
  3. genres = models.ManyToManyField('Genre')这代表了多对多(N:N)的关系:一本书可以属于多个流派,一个流派可以属于多本书。

这就是 Django 模型如何轻松表示复杂数据库关系的。

Django 模型基础知识:数据库迁移

Django models 기초 참고 이미지 - 데이터베이스 마이그레이션
(Django 模型基础参考图片 - 数据库迁移 )

创建一个模型并不意味着它会立即反映到数据库中。 Django 通过一个称为迁移的过程将模型的更改应用到数据库中。

python manage.py makemigrations
python manage.py 迁移

只需这两条命令,就能将模型创建为一个真正的数据库表。很方便吧?

总结

这就是 Django 模型的基础知识和对数据库结构的理解。 你觉得如何? 一开始可能会觉得有点复杂,但一旦掌握了窍门,你就会发现这是一个非常强大和方便的工具。 有了 Django 模型,你就可以轻松处理复杂的数据库。

既然您已经学习了 Django 模型的基础知识,为什么不尝试创建自己的模型呢? 通过实际编写和运行代码,您会对其有更深入的了解,让我们开始吧!

初学者术语表

  • ORM:ORM 是 Object-Relational Mapping 的缩写,是一种将对象与关系数据库连接起来的技术。
  • 迁移:Django 在数据库模式中反映模型变化的方式。
  • 字段:代表模型的属性,与数据库中的列相对应。
  • 外键:引用另一个表的主键的字段,用于表达一对多的关系。
  • 多对多关系:当两个模型之间可以有多种关系时。

类似文章