Django(3)-创建第一个数据模型-ORM映射

数据库配置

根目录下settings.py 。这是个包含了 Django 项目设置的 Python 模块。

通常,这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库,或者只是想尝试下 Django,这是最简单的选择。Python 内置 SQLite,所以你无需安装额外东西来使用它。

文件头部的 INSTALLED_APPS 设置项。这里包括了会在你项目中启用的所有 Django 应用。应用能在多个项目中使用,你也可以打包并且发布应用,让别人使用它们。

通常, INSTALLED_APPS 默认包括了以下 Django 的自带应用:

django.contrib.admin -- 管理员站点, 你很快就会使用它。

django.contrib.auth -- 认证授权系统。

django.contrib.contenttypes -- 内容类型框架。

django.contrib.sessions -- 会话框架。

django.contrib.messages -- 消息框架。

django.contrib.staticfiles -- 管理静态文件的框架。

创建数据库表

bash 复制代码
python manage.py migrate

创建模型

在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据.

在这个投票应用中,需要创建两个模型:问题 Question 和选项 Choice。Question 模型包括问题描述和发布时间。Choice 模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。

python 复制代码
from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField("date published")


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

每个模型被表示为 django.db.models.Model 类的子类。每个模型有许多类变量,它们都表示模型里的一个数据库字段。

每个字段都是 Field 类的实例 - 比如,字符字段被表示为 CharField ,日期时间字段被表示为 DateTimeField 。这将告诉 Django 每个字段要处理的数据类型。

创建数据库表

makemigrations 命令,Django 会检测你对模型文件的修改,并且把需改的部分储存为一次迁移。

migrate 命令,在数据库里创建新定义的模型的数据表:

bash 复制代码
$ python manage.py makemigrations polls
$ python manage.py migrate

改变模型需要这三步:

编辑 models.py 文件,改变模型。

运行 python manage.py makemigrations 为模型的改变生成迁移文件。

运行 python manage.py migrate 来应用数据库迁移。

打开db.sqlite3可以看到创建的数据库和表。

数据库API

https://docs.djangoproject.com/zh-hans/4.2/topics/db/queries/

进入交互式 Python 命令行

bash 复制代码
$ python manage.py shell

manage.py 会设置 DJANGO_SETTINGS_MODULE 环境变量,这个变量会让 Django 根据 mysite/settings.py 文件来设置 Python 包的导入路径。

objects.all()方法返回对象的__str__内容,可以看到在无数据时返回的是空

创建对象q后,使用q.save()保存对象

q.id获取对象的id

q.question_text获取对象的字段值

ORM映射

在 Django 中,ORM(对象关系映射)是一种将数据库表映射到 Python 对象的技术。Django 的 ORM 提供了简单而强大的方式来与数据库进行交互,而无需编写原始的 SQL 查询语句。下面是 Django ORM 的映射示例:

  1. 定义模型类:在 Django 中,模型类表示数据库中的表,每个模型类都是一个 Python 类,它继承自 django.db.models.Model
python 复制代码
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    publication_date = models.DateField()

上面的代码定义了一个名为 Book 的模型类,包含了 titleauthorpublication_date 三个字段。

  1. 执行数据库迁移:在定义完模型类后,需要运行 Django 的数据库迁移命令来创建对应的表结构。
bash 复制代码
python manage.py makemigrations  # 创建迁移文件
python manage.py migrate         # 应用迁移文件,创建数据库表
  1. CRUD 操作:一旦模型类和数据库表创建完毕,就可以使用 Django 的 ORM 来进行数据库的增删改查操作了。例如:
python 复制代码
# 创建一本书
book = Book(title='Django ORM Guide', author='John Doe', publication_date='2023-01-01')
book.save()

# 查询所有的书籍
books = Book.objects.all()

# 根据条件查询书籍
book = Book.objects.get(title='Django ORM Guide')

# 更新书籍信息
book.title = 'Updated Title'
book.save()

# 删除一本书
book.delete()

以上是 Django ORM 的基本映射和使用示例,ORM 还提供了更多高级的查询和操作方式,如过滤查询、关联查询、聚合函数等。可以参考 Django 官方文档来了解更多详细信息:https://docs.djangoproject.com/

相关推荐
Elastic 中国社区官方博客15 小时前
Elasticsearch:使用 Agent Builder 的 A2A 实现 - 开发者的圣诞颂歌
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
2301_8166602115 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
qq_3721542316 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
_下雨天.16 小时前
NoSQL之Redis配置与优化
数据库·redis·nosql
LiAo_1996_Y17 小时前
CSS如何实现文字渐变效果_通过background-clip实现艺术字
jvm·数据库·python
2401_8877245017 小时前
CSS如何让表单在手机端友好展示_利用Flexbox实现堆叠排版
jvm·数据库·python
数据库小组17 小时前
MySQL 删库后怎么恢复?binlog2sql 之外,NineData 还能做什么
数据库·sql·mysql·安全·数据·ninedata·删库
zhangchaoxies17 小时前
Layui轮播图(carousel)怎么设置自动播放间隔
jvm·数据库·python
切糕师学AI17 小时前
HBase:一文搞懂分布式宽列数据库(原理 + 架构 + 实战)
数据库·分布式·nosql·hbase·分布式宽列数据库·wide column db
competes17 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql