系列文章目录
- Django入门全攻略:从零搭建你的第一个Web项目
- Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
- [Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解]
- 还在写0.0…
文章目录
- 系列文章目录
- 前言
- 一、ORM映射
- 1.1 ORM映射概念
- ORM(object relational mapping) :对象关系映射
- ORM映射是双向的:既可以将类映射成表,也可以将表映射成类
- 1.2 创建编写模型类及迁移步骤
- 1.3 模型类编写
- 1.4 生成迁移文件
- 1.5 执行迁移
- 二、admin控制台
- 2.1 admin控制台概念
- 2.2 admin控制台超级用户
- 2.3 admin控制台模型类注册
- 三、ORM视图操作
- 3.1 如何通过ORM操作模型类
- 3.2 模版页面数据渲染ORM操作结果
前言
Django的ORM是Python开发者的利器,它简化了数据库操作,让编码更加高效和直观。本文将带你快速了解ORM的基本概念,指导你创建模型类、执行迁移、利用admin控制台,并探索ORM的视图操作。
一、ORM映射
1.1 ORM映射概念
ORM(object relational mapping) :对象关系映射
ORM映射是双向的:既可以将类映射成表,也可以将表映射成类
1.2 创建编写模型类及迁移步骤
1. 创建模型类,在models.py中创建类
2. 自定义类,需要继承models.Model
3. 自定义属性
4. 需要添加Meta()元类,指定当前类迁移完成后,在数据库表中的名字
5. 执行生成迁移文件的命令:`python manage.py makemigrations`
6. 执行具体迁移操作:`python manage.py migrate`
7. 打开pycharm中Database选项,找到sqlite选项,选择项目中的数据库文件
1.3 模型类编写
通过ORM映射在子应用app下的models.py文件中创建模型类:
#myapp/models.py
from django.db import models
# Create your models here.
class Weather(models.Model):
weather = models.CharField(max_length=100,verbose_name="天气")
def __str__(self):
return self.weather
class Meta:
db_table='修改'
verbose_name_plural = "天气"
# 设置当前表名的一个可读的性更好的名字
在这里我们使用到了 django 的ORM映射关系用来创建数据库表,继承自models.Model类,一个类用来表示一张表,类中的一个属性代表一个字段。
- 当某个子应用
APP
涉及到了数据库的使用时,要记得在settings
文件中进行配置
#myproject/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
1.4 生成迁移文件
接下来通过manage.py命令行管理工具提供的两条,创建我们所需要的数据
python manage.py makemigrations # 创建数据库迁移文件
1.5 执行迁移
python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行
二、admin控制台
2.1 admin控制台概念
admin控制台是 django 为我们提供的一个非常便捷的用来管理数据库的界面,
在主路由文件下,它对应的路由设置:path('admin/', admin.site.urls)
2.2 admin控制台超级用户
- 创建admin超级用户,使用manage.py命令行工具执行如下命令并按照提示创建即可
python manage.py createsuperuser
登录进入后:
并没有出现迁移后的表,这就要对模型类进行 注册
2.3 admin控制台模型类注册
在app下的admin.py文件中进行模型类的注册:
#myapp/admin.py
from django.contrib import admin
from myapp import models
admin.site.register(models.Weather)
#使用 register 函数接收模型类作为参数即可完成注册
注册完成,刷新页面即可看到weather表
三、ORM视图操作
最后,在视图中进行数据库操作,获取数据库中的数据来渲染到页面上,修改之前所编写的视图,并使用ORM的数据库操作获取数据
3.1 如何通过ORM操作模型类
# myapp/views.py
from django.shortcuts import render
from myapp import models
def index(request):
#使用**all**方法,获取某表中的所有数据
weathers = models.Weather.objects.all()
content = {
"weathers": weathers,
}
return render(request, 'index.html', content)
3.2 模版页面数据渲染ORM操作结果
<!DOCTYPE html>
<html lang="en">
{% load staticfiles %}
<head>
<meta charset="UTF-8">
<title>hi</title>
</head>
<body>
{% for weather in weathers %}
<p>{{ weather }}</p>
{% empty %}
<p>没有任何天气</p>
{% endfor %}
</body>
</html>