Jupyter AI

13 Django中的模型创建

📅 发表日期: 2024年8月10日

分类: 🌐Django 入门

👁️阅读: --

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

什么是Django模型?

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

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

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. 自定义方法

在模型中,可以定义一些方法以处理与模型数据相关的操作。例如,添加一个返回书名和作者的字符串表示:

def __str__(self):
    return f"{self.title} by {self.author}"

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

创建数据库迁移

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

  1. 生成迁移

    python manage.py makemigrations
    

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

  2. 应用迁移

    python manage.py migrate
    

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

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

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

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

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

    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 列表中:

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

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

总结

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

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

🌐Django 入门 (滚动鼠标查看)