Django ORM 模型速通:定义一张表只需 3 行代码

举报
周杰伦本人 发表于 2025/07/30 14:03:54 2025/07/30
【摘要】 Django ORM 模型速通:定义一张表只需 3 行代码 一、OR M 是什么Object–Relational Mapping:把「一张数据库表」映射成「一个 Python 类」,把「一行数据」映射成「一个对象」。从此不用手写 SQL,增删改查全靠类方法。 二、代码写在哪所有模型类统一放在 子应用/models.py(今天以 book/models.py 为例) 三、最小可用模型:Bo...

Django ORM 模型速通:定义一张表只需 3 行代码

一、OR M 是什么

Object–Relational Mapping:把「一张数据库表」映射成「一个 Python 类」,把「一行数据」映射成「一个对象」。从此不用手写 SQL,增删改查全靠类方法。

二、代码写在哪

所有模型类统一放在 子应用/models.py
(今天以 book/models.py 为例)

三、最小可用模型:Book

from django.db import models

class Book(models.Model):
    name = models.CharField(max_length=20)
说明
class Book(models.Model): 一个类 = 一张表;必须继承 models.Model
name = models.CharField(...) 类属性 = 表字段;CharField 对应 VARCHAR
max_length=20 字段选项;等同于 VARCHAR(20)

Django 会自动添加主键 idAutoField)生成表名 app_label_classnamebook_book

四、字段速查表(常用)

这里提供一些字段对应的Python写法

字段 对应 SQL 例子
CharField VARCHAR title = models.CharField(max_length=100)
BooleanField BOOLEAN is_hot = models.BooleanField(default=False)
ForeignKey FOREIGN KEY author = models.ForeignKey('Author', on_delete=models.CASCADE)

on_delete=models.CASCADE是级联删除

五、完整示例:Book + People

class Book(models.Model):
    name = models.CharField(max_length=20)

class People(models.Model):
    name  = models.CharField(max_length=20)
    gender = models.BooleanField()
    book   = models.ForeignKey(Book, on_delete=models.CASCADE)
  • 外键字段命名不要叫 classid 等 Python/SQL 关键字

这里的People指的是书中的人物,on_delete=models.CASCADE是级联删除,当你删除一本书时,书中所有的任务都会被自动删除,保证数据库不会出现“孤儿”外键。也就是on_delete=models.CASCADE = “爸爸没了,孩子也跟着走”。

六、三步确认

  1. 写好类 → 保存

  2. 激活虚拟环境 → python manage.py makemigrations 生成迁移

  3. python manage.py migrate 真正建表

七、一句话总结

模型类 = 表,属性 = 字段,继承 models.Model 就能让 Django 帮你把表建好。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。