news 2026/10/25 1:45:35

Django初学第二章第四节 Class 的创建(10月24日)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django初学第二章第四节 Class 的创建(10月24日)

关于Django项目中,创建类(class)的相关书写代码

上一节我们把项目的"地基"搭好了,这一节来做 Django 中最核心、也最有意思的一步——创建 Class(类)。在 Django 里,我们说的"创建类",通常指的是在models.py中创建数据模型类(Model)。它一句话概括就是:

一句话理解:模型类 = 数据库表。你用 Python 写一个类,Django 就帮你自动生成一张对应的数据库表,一个属性对应一列字段。

一、为什么用 Class 而不是直接写 SQL?

刚学编程时,很多人第一次接触"类"会觉得抽象。其实在 Django 里很好理解:

  • 写一个类Article(文章)→ 数据库里就有一张article表
  • 类里的属性title、content→ 表里的列(字段)
  • 创建一个类的实例 → 往表里插入一行数据

这种方式叫ORM(对象关系映射):你只管写 Python,SQL 交给 Django。好处是不会写 SQL 也能操作数据库,而且换数据库(MySQL ↔ PostgreSQL)几乎不用改代码。

二、创建一个模型类

打开你的应用目录下的models.py(例如blog/models.py),我们来创建一个博客文章类:

# blog/models.py from django.db import models class Article(models.Model): # 文章标题,字符串类型,最长 100 字符 title = models.CharField('标题', max_length=100) # 文章正文,长文本类型,可以为空(blank=True 表示表单中可不填) content = models.TextField('正文', blank=True) # 阅读量,整数类型,默认为 0 views = models.IntegerField('阅读量', default=0) # 发布时间,创建时自动记录当前时间 created_at = models.DateTimeField('发布时间', auto_now_add=True) def __str__(self): # 让对象在后台和命令行里显示为文章标题,而不是 "Article object (1)" return self.title

逐行拆解(新手重点看这里)

  • class Article(models.Model):继承models.Model是关键!继承了它,Django 才会把这个类当成数据表来处理。
  • CharField(max_length=100):短文本,必须指定最大长度。
  • TextField():长文本,没有长度限制,适合存文章内容。
  • IntegerField(default=0):整数,default给了默认值。
  • DateTimeField(auto_now_add=True):数据第一次保存时自动填入当前时间。
  • 每个字段的第一个参数(如'标题')是"人类可读名称",会显示在后台管理界面里。

三、常用字段类型速查表

  • CharField:短字符串(用户名、标题)
  • TextField:长文本(正文、简介)
  • IntegerField:整数(阅读量、库存)
  • FloatField/DecimalField:小数(价格)
  • BooleanField:真 / 假(是否发布)
  • DateTimeField:日期 + 时间(发布时间)
  • ForeignKey:外键,关联另一张表(文章的作者)

四、让模型生效:两条命令

类写好了,但数据库里还没有这张表。Django 用"迁移(Migration)"机制把模型同步到数据库,在项目根目录的终端里依次执行:

python manage.py makemigrations

这条命令的意思是:"Django,帮我检查模型改动,生成一个迁移文件"。你会看到类似输出:

Migrations for 'blog': blog\migrations\0001_initial.py - Create model Article

python manage.py migrate

这条命令把迁移文件真正应用到数据库,创建出表。看到一串OK就成功了。

记住口诀:改了models.py→makemigrations→migrate。先"记账",再"执行",两步缺一不可。

五、验证一下:把模型注册到后台

打开blog/admin.py,注册我们的类:

# blog/admin.py from django.contrib import admin from .models import Article admin.site.register(Article)

然后创建一个超级管理员账号:

python manage.py createsuperuser

启动开发服务器,浏览器访问http://127.0.0.1:8000/admin:

python manage.py runserver

登录后你就能看到Articles模块,可以像填表单一样添加文章——不需要写一行 SQL!

六、在代码里使用这个类

进入python manage.py shell,体验一下 ORM 的威力:

from blog.models import Article # 创建一篇文章(相当于 INSERT) a = Article(title='我的第一篇博客', content='Hello Django!') a.save() # 查询所有文章(相当于 SELECT *) Article.objects.all() # <QuerySet [<Article: 我的第一篇博客>]> # 按标题查询(相当于 WHERE) Article.objects.get(title='我的第一篇博客')

看到没有?这就是__str__方法的功劳——查询结果显示的是文章标题,而不是冷冰冰的 "Article object (1)"。

小结

  1. 模型类写在models.py里,必须继承models.Model
  2. 一个类 = 一张表,一个属性 = 一列字段
  3. 改动模型后记得makemigrations+migrate
  4. 写__str__方法让对象显示更友好
  5. 在admin.py里注册后可直接用后台管理数据

下一篇:第二章第五节「数据的增删改查」——我们将深入学习 QuerySet 的过滤、排序与分页。有问题欢迎在评论区留言!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/25 1:43:36

AI率怎么降最靠谱?20款工具全实测,红黑榜一次看懂

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/25 1:42:44

analytics-product - SKILL

name: analytics-product description: “Analytics de produto — PostHog, Mixpanel, eventos, funnels, cohorts, retencao, north star metric, OKRs e dashboards de produto.” risk: none source: community date_added: ‘2026-03-06’ author: renat tags: analyticsp…

作者头像 李华
网站建设 2026/10/25 1:42:01

GNSS 高级篇 06 跟踪算法:6.3 跟踪算法抗干扰秘籍

GNSS 高级篇 6 跟踪算法 6.3 跟踪算法抗干扰秘籍 捕获把信号"找到"了&#xff0c;跟踪环要把信号"锁住"——但在真实环境中&#xff0c;干扰、多径、弱信号、高动态都在试图把跟踪环"撬开"。这一节讲跟踪环怎么在恶劣条件下"屹立不倒"…

作者头像 李华
网站建设 2026/10/25 1:40:40

Path of Building PoE2:4步搭出你的第一个PoE2角色BD

Path of Building PoE2&#xff1a;4步搭出你的第一个PoE2角色BD 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 《流放之路2》的天赋树动辄几百个节点&#xff0c;点错一个就要重来&#xff1b;换一把武…

作者头像 李华
网站建设 2026/10/25 1:34:40

Mac M系列芯片AI开发环境迁移:Colima+Docker实战

1. 项目背景与需求解析最近在帮团队做AI开发环境迁移时&#xff0c;发现Parallels虚拟机跑Docker实在太吃资源了。我的16寸MacBook Pro风扇经常狂转&#xff0c;编译镜像时CPU直接飙到90℃。考虑到团队里多数人都在用M系列芯片的Mac&#xff0c;决定把整套AI基建从Parallels虚拟…

作者头像 李华