Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作

在这里插入图片描述

系列文章目录

  • 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>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/665254.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国青年汽车研发仿真建模大赛“汽车系统建模仿真与科学计算赛道”,邀您来赛!

近日&#xff0c;由中国青年创业就业基金会、国家新能源汽车技术创新中心共同主办&#xff0c;中国汽车研发软件产业创新联盟承办、苏州同元软控信息技术有限公司&#xff08;简称“同元软控”&#xff09;等企业协办的首届中国青年汽车研发仿真建模大赛启动仪式在北京经开区拉…

精选免费在线工具与资源推荐20240531

精选免费在线工具与资源推荐 引言 在互联网高速发展的今天&#xff0c;我们身处一个信息爆炸的时代。为了更好地应对工作和学习中的挑战&#xff0c;我们时常需要借助各种工具和资源来提高效率。幸运的是&#xff0c;网络上存在着大量免费且高效的在线工具和资源&#xff0c;…

【算法】模拟算法——Z字形变换(medium)

题解&#xff1a;模拟算法——Z字形变换(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接&#xff1a;LINK 2.题解 利用模拟&#xff0c;来解决问题。 首先创建出一个O(numRows*n)的数组来&#xff0c;并按照题目要求把每个字符按顺序填进去。 这里以numRows…

【运维项目经历|026】Redis智能集群构建与性能优化工程

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

学习网站地址汇总

本文用于记录学习路上遇到问题&#xff0c;各位大神的分享笔记&#xff0c;内容包括数据库的安装卸载&#xff0c;基础使用&#xff0c;sql语句编写&#xff0c;计算机网络知识等&#xff0c;属于知识大杂烩 1.动态行转列&#xff1a;https://www.cnblogs.com/gaizai/p/375329…

AquaCrop农业水资源管理,模拟作物生长过程中水分的需求与消耗

AquaCrop是由世界粮食及农业组织&#xff08;FAO&#xff09;开发的一个先进模型&#xff0c;旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理&#xff0c;特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop 不…

S-RISE——解读人脸识别系统及其评估指标

1. 概述 过去十多年来&#xff0c;深度学习的突破性进展使图像识别任务&#xff08;如图像分类、物体检测和人脸识别&#xff09;取得了巨大进步。人脸识别技术的性能也有了显著提高&#xff0c;并吸引了全世界的关注&#xff0c;目前已被应用于移民控制和安防摄像头等多个领域…

了解m4s格式

正常在hls V7 和 DASH中都会使用m4s存放数据。他们使用fmp4的方式来存放信息&#xff1a; fmp4格式 &#xff1a; 一、hls V7介绍 1. 包含的文件&#xff1a; 2. prog_index.m3u8中 指明了 init.mp4与 上面各个.m4s文件的关系&#xff0c;具体内容为&#xff1a; 其中init.mp…

【期末速成】——计算机组成原理(1)概述

目录 一、什么是计算机的组成 二、冯诺依曼体系结构计算机的特点 三、计算机系统的层次结构 四、机器语言、汇编语言、高级语言, 五、 编译程序、解释程序、汇编程序 六、已知主频、CPI计算程序运行时间 一、什么是计算机的组成 计算机的组成可以分为五个部件和两个信息…

【C++ ——— 哈希】位图 | 布隆过滤器

文章目录 1、位图1.1位图概念 2.位图实现位图的应用1.一百亿个整数&#xff0c;设计算法找到只出现一次的整数?2.给两个文件&#xff0c;分别有一百亿个整数&#xff0c;我们只有1G内存该如何找到两个文件的交集&#xff1f;3.位图应用变形&#xff1a;一个文件有100亿个int&a…

什么是数据资产管理?数据资产管理包括了哪些内容?

数据资产管理包括数据模型管理、数据标准管理、数据质量管理等 10 个活动职能&#xff0c;覆盖数据资源化、数据资产化两个阶段。本章参考 PDCA 方法&#xff0c;从计划、执行、检查、改进四个环节着手&#xff0c;阐述数据资产管理活动职能的核心理念与实践要点。 一、数据模型…

RedisTemplate实战应用--队列等

一、RedisTemplate队列插入 1、从集合左边插入值 https://blog.csdn.net/weixin_43658899/article/details/121040307 leftPush(K key, V value) redisTemplate.opsForList().leftPush("leftdatakey","bbbb");2、从集合左边开始在v1值后边插入新值v2 le…

SG7050EEN差分晶体振荡器:为5G路由器提供卓越的时钟源

随着5G技术的快速发展&#xff0c;5G路由器作为连接高速网络的重要设备&#xff0c;正迅速普及。为了确保5G路由器在高宽带和低延迟的网络环境中表现出色&#xff0c;选择一款高性能的晶体振荡器至关重要。爱普生推出的SG7050EEN差分晶体振荡器&#xff0c;以其高精度、低相位噪…

Three.js 研究:4、创建设备底部旋转的科技感圆环

1、实现效果 2、PNG转SVG 2.1、原始物料 使用网站工具https://convertio.co/zh/png-svg/进行PNG转SVG 3、导入SVG至Blender 4、制作旋转动画 4.1、给圆环着色 4.2、修改圆环中心位置 4.3、让圆环旋转起来 参考一下文章 Three.js 研究&#xff1a;1、如何让物体动起来 Thre…

Java | Leetcode Java题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n triangle.size();int[] f new int[n];f[0] triangle.get(0).get(0);for (int i 1; i < n; i) {f[i] f[i - 1] triangle.get(i).get(i…

2024新版二开微信发卡小程序源码卡密系统流支持量主

2024新版二开微信发卡小程序源码卡密系统流支持量主。裂变扩展多种领取模式二次开发的发卡小程序源码&#xff0c;其后台采用PHP编写&#xff0c;支持用户通过付费购卡或者观看视频广告领取卡密&#xff0c;该小程序还支持流量主&#xff0c;因为功能需要&#xff0c;我就进行了…

汇舟问卷:国外问卷调查两小时赚28美金?

现在的年轻人不愿意打工的原因不只是因为累&#xff0c;而且赚的钱也不多。有些人开玩笑地说&#xff0c;摆个摊儿卖点小商品都比上班赚得多&#xff0c;这确实是事实。 打工只能勉强维持生计&#xff0c;不能致富。因此&#xff0c;如果我们想赚大钱&#xff0c;首先需要改变…

ChatGPT-4o在临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模中的应用

ChatGPT-4o在临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模中的应用 2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。…

Flutter基础 -- Dart 语言 -- 基础类型

目录 0. 配置 1. 变量 1.1 弱类型 var Object dynamic 1.2 强类型 1.3 使用场景 var 简化定义变量 查询参数定义 返回的实例对象 2. 常量 final 和 const 2.1 相同点 类型声明可以省略 初始后不能再赋值 不能和 var 同时使用 2.2 不同点 const 需要确定的值 …

【GD32】04 - Timer定时器

GD32中的定时器 GD32E230中有七个定时器&#xff0c;六种类型&#xff0c;其中通用的L4版本有两个&#xff0c;其他类型的各一个。 那我们就以通用L4这个类型来敲代码&#xff0c;其他流程是通用的。 通用L4 虽然每种类型的定时器都有自己的结构框图&#xff0c;但是其实大差…