在前一篇文章中,我们探讨了 Django 的 MVC 架构,尤其是路由和 URL 管理的关键概念。这些概念为我们提供了与用户交互的基础框架,现在,我们将深入到 Django 的数据层,具体地说,我们将学习如何创建 Django 模型。
什么是Django模型?
在 Django 中,模型是应用程序的数据结构,代表数据库中的一个表。每个模型由一个 Python 类定义,类的属性对应于表中的字段。Django 使用这些模型来处理数据库的交互。
例如,假设我们在开发一个图书管理系统,我们可能需要一个模型来表示每一本书的信息。以下是一个简单的 Book
模型示例:
1 | from django.db import models |
在上面的代码中,我们定义了一个叫做 Book
的模型,它有几个字段(或属性):
title
: 书名,存储为字符字段(CharField
)。author
: 作者,类似存储为字符字段。published_date
: 出版日期,存储为日期字段(DateField
)。isbn
: 为每本书分配唯一的 ISBN 号。pages
: 页面数量,以整数形式存储。cover_image
: 封面图,允许上传图片。
创建模型
1. 在应用程序中定义模型
模型通常在 Django 应用的 models.py
文件中定义。可以根据实际需求创建不同的模型,并为它们添加适当的字段。
2. 数据库字段类型
常用的 Django 字段类型包括:
CharField
: 用于字符类型数据,必须设置max_length
属性。TextField
: 用于大文本。IntegerField
: 存储整型数字。DateField
: 存储日期。ImageField
: 上传图片。
3. 验证与约束
可以在字段上添加验证和约束,例如,使用 unique=True
来确保字段的唯一性。其他验证参数包括 blank=False
(表示该字段不能为空)和 null=True
(允许该字段的值为 NULL)。
4. 自定义方法
在模型中,可以定义一些方法以处理与模型数据相关的操作。例如,添加一个返回书名和作者的字符串表示:
1 | def __str__(self): |
通过这样的方式,当我们在 Django 管理后台中查看每本书时,我们会看到更友好的显示格式。
创建数据库迁移
创建和编辑完模型后,接下来需要进行数据库迁移,以便在数据库中生成相应的表。可以通过以下命令生成和应用迁移:
生成迁移:
1
python manage.py makemigrations
这会生成一个包含模型变更的迁移文件。
应用迁移:
1
python manage.py migrate
这将把生成的迁移应用到数据库中,实际创建表。
小案例:创建一个简单的书籍管理应用
以下是一个完整的案例,演示了如何创建一个简单的书籍管理应用。
首先,在您的 Django 项目中创建一个新应用:
1
python manage.py startapp library
在
library/models.py
中定义Book
模型:1
2
3
4
5
6
7
8
9
10
11
12from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
published_date = models.DateField()
isbn = models.CharField(max_length=13, unique=True)
pages = models.IntegerField()
cover_image = models.ImageField(upload_to='covers/', blank=True, null=True)
def __str__(self):
return f"{self.title} by {self.author}"在
settings.py
中将新应用添加到INSTALLED_APPS
列表中:1
2
3
4INSTALLED_APPS = [
# ... other apps ...
'library',
]生成并应用数据库迁移:
1
2python manage.py makemigrations library
python manage.py migrate现在您可以通过 Django 管理后台来添加、编辑和删除书籍了(确保您已经创建了超级用户并设置了管理界面)。
总结
在本篇文章中,我们学习了 Django 模型的创建,包括模型的定义、字段的类型以及如何将模型迁移到数据库。这些都是构建 Django 应用程序的核心组件,并为后续的数据访问和操作奠定了基础。
在接下来的文章中,我们将探讨数据库迁移的详细内容,包括如何管理数据库的版本控制和如何执行数据迁移操作。