Django ORM 模型速通:定义一张表只需 3 行代码
【摘要】 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 会自动添加主键 id(AutoField)生成表名 app_label_classname → book_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)
- 外键字段命名不要叫
class、id等 Python/SQL 关键字
这里的People指的是书中的人物,on_delete=models.CASCADE是级联删除,当你删除一本书时,书中所有的任务都会被自动删除,保证数据库不会出现“孤儿”外键。也就是on_delete=models.CASCADE = “爸爸没了,孩子也跟着走”。
六、三步确认
-
写好类 → 保存
-
激活虚拟环境 →
python manage.py makemigrations生成迁移 -
python manage.py migrate真正建表
七、一句话总结
模型类 = 表,属性 = 字段,继承 models.Model 就能让 Django 帮你把表建好。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)