13 Django中的模型创建

在前一篇文章中,我们探讨了 Django 的 MVC 架构,尤其是路由和 URL 管理的关键概念。这些概念为我们提供了与用户交互的基础框架,现在,我们将深入到 Django 的数据层,具体地说,我们将学习如何创建 Django 模型。

什么是Django模型?

在 Django 中,模型是应用程序的数据结构,代表数据库中的一个表。每个模型由一个 Python 类定义,类的属性对应于表中的字段。Django 使用这些模型来处理数据库的交互。

例如,假设我们在开发一个图书管理系统,我们可能需要一个模型来表示每一本书的信息。以下是一个简单的 Book 模型示例:

1
2
3
4
5
6
7
8
9
from 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) # ISBN号
pages = models.IntegerField() # 页数
cover_image = models.ImageField(upload_to='covers/', blank=True, null=True) # 封面图

在上面的代码中,我们定义了一个叫做 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
2
def __str__(self):
return f"{self.title} by {self.author}"

通过这样的方式,当我们在 Django 管理后台中查看每本书时,我们会看到更友好的显示格式。

创建数据库迁移

创建和编辑完模型后,接下来需要进行数据库迁移,以便在数据库中生成相应的表。可以通过以下命令生成和应用迁移:

  1. 生成迁移

    1
    python manage.py makemigrations

    这会生成一个包含模型变更的迁移文件。

  2. 应用迁移

    1
    python manage.py migrate

    这将把生成的迁移应用到数据库中,实际创建表。

小案例:创建一个简单的书籍管理应用

以下是一个完整的案例,演示了如何创建一个简单的书籍管理应用。

  1. 首先,在您的 Django 项目中创建一个新应用:

    1
    python manage.py startapp library
  2. library/models.py 中定义 Book 模型:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from 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}"
  3. settings.py 中将新应用添加到 INSTALLED_APPS 列表中:

    1
    2
    3
    4
    INSTALLED_APPS = [
    # ... other apps ...
    'library',
    ]
  4. 生成并应用数据库迁移:

    1
    2
    python manage.py makemigrations library
    python manage.py migrate
  5. 现在您可以通过 Django 管理后台来添加、编辑和删除书籍了(确保您已经创建了超级用户并设置了管理界面)。

总结

在本篇文章中,我们学习了 Django 模型的创建,包括模型的定义、字段的类型以及如何将模型迁移到数据库。这些都是构建 Django 应用程序的核心组件,并为后续的数据访问和操作奠定了基础。

在接下来的文章中,我们将探讨数据库迁移的详细内容,包括如何管理数据库的版本控制和如何执行数据迁移操作。

13 Django中的模型创建

https://zglg.work/django-zero/13/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论