在 Django 中,模型(Model)是用于定义数据结构的组件,其作用如下:
-
定义数据结构:模型用于定义数据库中的表格和表格中的字段(列),其中每个模型类对应一个表格,模型中的每个字段对应表格中的一列。模型的定义可以在
models.py
文件中完成。 -
数据库操作:模型提供了简单易用的 API 用于操作数据库,包括创建、读取、更新和删除数据等。通过模型可以直接在数据库中执行 CRUD 操作,无需手动编写 SQL 语句。
-
数据验证:Django 中的模型还提供了强大的数据验证功能,可以在保存数据之前验证数据的完整性和有效性,确保数据的正确性。
-
ORM 框架:Django 的模型是基于 ORM(对象关系映射)框架实现的,可以轻松地在不同的数据库之间切换,同时也提供了方便的数据访问和查询功能,避免了直接编写 SQL 语句带来的繁琐和错误。
总的来说,模型是 Django 应用程序中最重要的组件之一,它负责定义数据结构、操作数据库、数据验证和 ORM 框架等方面的功能。通过模型的定义和使用,可以更加方便地管理应用程序中的数据,并且可以保证数据的正确性和安全性。
实例:
from django.db import models from django.utils import timezone class Repair(models.Model): # 报修单号,使用自增长的主键作为唯一标识 id = models.AutoField(primary_key=True,verbose_name="报修编号") # 报修时间,使用默认值为当前时间 date = models.DateTimeField(default=timezone.now,verbose_name="报修时间") # 报修人姓名,最大长度为50个字符 name = models.CharField(max_length=50) # 报修人电话,最大长度为20个字符 phone = models.CharField(max_length=20) # 报修内容,最大长度为200个字符 content = models.CharField(max_length=200) # 报修状态,使用choices定义状态的可选值 STATUS_CHOICES = [ ('pending', '待处理'), ('processing', '处理中'), ('completed', '已完成'), ('canceled', '已取消') ] status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending') created_at = models.DateTimeField(auto_now_add=True,verbose_name="创建时间") updated_at = models.DateTimeField(auto_now=True,verbose_name="更新时间") class Meta: verbose_name = "报修单" verbose_name_plural = "报修单" # 按照报修时间倒序排列 ordering = ['-date'] def __str__(self): # 返回报修单号和报修人姓名 return f"{self.id} ({self.name})" def cancel(self): # 取消报修单 self.status = 'canceled' self.save()
上述代码定义了一个名为 Repair
的模型,其中包含了报修单号、报修时间、报修人姓名、报修人电话、报修内容和报修状态等字段。该模型的属性和方法说明如下:
id
:使用AutoField
定义主键字段,作为唯一标识符。Django 4 中的模型(Model)类默认会自动为每个模型添加一个自增的整数类型主键字段,不需要显式地在模型中定义id
字段。date
:使用DateTimeField
定义报修时间字段,使用timezone.now
设置默认值为当前时间。name
:使用CharField
定义报修人姓名字段,设置最大长度为 50 个字符。phone
:使用CharField
定义报修人电话字段,设置最大长度为 20 个字符。content
:使用CharField
定义报修内容字段,设置最大长度为 200 个字符。status
:使用CharField
定义报修状态字段,使用choices
定义状态的可选值,设置默认值为pending
。Meta
:使用Meta
类设置模型的元数据,包括排序方式等。在这里,我们将报修单按照报修时间的倒序排列。__str__
方法:使用__str__
方法返回报修单的字符串表示,方便在 Django 后台管理界面中查看。cancel
方法:定义一个cancel
方法,用于取消报修单,将状态设置为canceled
并保存到数据库中。- 使用了
verbose_name
和verbose_name_plural
选项来分别设置模型的名称和复数形式。同时,我们也将所有字段的verbose_name
设置为相应的汉字名称,以便在 Django 后台管理界面中更清晰地展示信息。 - 同时,我们增加了创建时间和更新时间字段,用于记录每条记录的创建时间和最后更新时间。
created_at
字段使用了auto_now_add=True
参数,表示在创建记录时自动设置为当前时间。updated_at
字段使用了auto_now=True
参数,表示每次保存记录时都会自动更新为当前时间。
以上是一个简单的报修表的模型定义,可以作为 Django 模型的一个示例来参考。需要注意的是,这只是一个示例,实际项目中
标签:报修,verbose,进阶,Django4,模型,定义,models,全栈,name From: https://www.cnblogs.com/beichengshiqiao/p/17347270.html