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.weatherclass 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 modelsdef 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>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

道歉性质的《情况说明》应如何写,才能赢得对方的谅解?

道歉性质的《情况说明》应如何写&#xff0c;才能赢得对方的谅解&#xff1f; ——从“成都地铁被诬陷偷拍案”两涉事女的《情况说明》中想到了什么&#xff1f; 据九派新闻报道&#xff0c;在“成都地铁被诬陷偷拍案”中&#xff0c;近日两名当事女子罗某某和曾某某首次公开回…

网关(GateWay)- 快速使用

引入依赖 <!-- gateway --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency> 路由配置 server:port: 8088 spring:application:name: api-gatew…

零基础学会asp.net做网站/公众号/小程序之三:实战初体验(简单程序教学)

关注我&#xff0c;持续分享逻辑思维&管理思维&面试题&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b; 博主在互联网大厂深耕近二十年&#xff0c;从一线码农做起&#xff0c;到人工智能公司副总裁。希望把过往经验总结出来&#xff0…

MySQL 命令总结篇-思维导图

一些常用命令以思维导图形式总结在这里了&#xff0c;掌握这些进行MySQL基本操作绝对没问题&#xff0c;加油&#xff01;友友们可以根据这些思维导图进行知识总结。 目录 一、快速上手 二、SQL 语句分类&#xff08;DDL、DML、DQL、DCL&#xff09; 三、数据类型 四、约束…

探索AI去衣技术中的反射应用

在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展已经渗透到了我们生活的方方面面。其中&#xff0c;图像处理和计算机视觉作为AI的重要分支&#xff0c;正不断推动着创新应用的边界。今天&#xff0c;我们要探讨的是一个颇具争议但又技术上颇为有…

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解

目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列&#xff1a; 相对顺序是跟源字符串/数组是一致的但是元素和元素之间&#xff0c;在源字符串/数组中可以是不连续的一般时间…

金融行业数字化上云及信创改造过程中的一些问题及解决方案|合集①

Q&#xff1a;对金融机构来讲&#xff0c;什么是一切业务运行的前提&#xff1f; 金融机构的业务连续性对系统的稳定性要求极高。任何系统故障都可能导致严重的业务中断和经济损失。因此&#xff0c;金融机构需要IT基础架构能够提供高稳定性的服务&#xff0c;确保业务的连续运…

Android Display Graphics #1 整体框架介绍一

软件基础 Android的framework层提供了一系列的图像渲染API&#xff0c;可绘制2D和3D。简单理解就是上层开发APP的小伙伴提供了接口&#xff0c;开发者可以直接显示对应的自己内容。但如果掌握了Display底层逻辑再写上层app&#xff0c;会有掌控力&#xff0c;出问题可以根据lo…

iOS自动连接已知Wi-Fi功能的实现

首先需要在配置文件申请的时候将hotspot勾选上&#xff0c;之后还要在x-code里添加对应的配置&#xff0c;由于我们并没有用到获取设备周边Wi-Fi的功能&#xff0c;所以就没申请相关权限 相关连接Wi-Fi代码如下&#xff1a; #import <NetworkExtension/NetworkExtension.h&…

探索k8s集群的存储卷 emptyDir hostPath nfs

目录 一 含义 查看支持的存储卷类型 emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 一 含义 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重…

FreeRTOS【12】队列集使用

1.开发背景 基于以上的章节&#xff0c;了解了 FreeRTOS 多线程间的信号量、队列的使用&#xff0c;已经满足了日常使用场景。这个篇章要介绍的是队列集&#xff0c;实际上队列的升级版&#xff0c;存储信号量和队列等的触发事件。 队列集在实际的开发项目中应用相对比较少&…

chap4 simple neural network

全连接神经网络 问题描述 利用numpy和pytorch搭建全连接神经网络。使用numpy实现此练习需要自己手动求导&#xff0c;而pytorch具有自动求导机制。 我们首先先手动算一下反向传播的过程&#xff0c;使用的模型和初始化权重、偏差和训练用的输入和输出值如下&#xff1a; 我…

达梦数据库写文件的方式探索

0x01 前沿 这篇文章整体算是《达梦数据库手工注入笔记》的续集&#xff0c;达梦作为国内优秀的信创数据库&#xff0c;在关基单位中拥有越来越大的用户使用量。 通过SQL注入来写文件一直以来都是SQL注入漏洞深入利用的一种方式&#xff0c;对于不同的数据库通常写文件的方式也是…

刷代码随想录有感(86):贪心算法——跳跃游戏II(最小跳跃次数)

题干&#xff1a; 代码&#xff1a; class Solution { public:int jump(vector<int>& nums) {if(nums.size() 1)return 0;int curcover 0;int nextcover 0;int res 0;for(int i 0; i < curcover; i){nextcover max(i nums[i], nextcover);if(i curcover …

二叉树的链式存储

目录 1.二叉树的概念和性质2.二叉树的链式存储2.1二叉树的遍历2.1.1前中后遍历2.1.2层次遍历 2.2求节点的个数2.3求叶子节点的个数2.4求第k层节点个数2.5二叉树的销毁2.6怎样通过前序遍历构建二叉树2.7判断是否是满二叉树 1.二叉树的概念和性质 一&#xff0c;概念 1.五种形态…

掌握 JavaScript 基本输出方法

掌握 JavaScript 基本输出方法 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 JavaScript 是一种强大且灵活的编程语言&#xff0c;广泛用于 Web 开发。通过 JavaScript&#xff…

YOLOV8训练自己的数据集图文实战,包含voc数据集处理代码

yolov8官方链接: link 本文章是以labelimg标注好的voc数据集为基础,通过转换格式训练模型, 一,安装 pip install ultralyticsor pip install githttps://github.com/ultralytics/ultralytics.gitmainlink 二,数据集准备 数据集格式如下 ├── ultralytics └── datase…

RocketMq broker源码解析

broker 集群工作流程 NameSrv启动成功后&#xff0c;等待broker、Consumer和producer启动后也与NameSrv保持长连接, NameSrv相当于是路由控制中心。启动broker, broker与所有的NameSrv建立长连接, broker&#xff0c;通过定时线程定时向NameSrv发送心跳&#xff0c;broker信息…

LightDB pro*c迁移指南(游标模块)

文章目录 一、不使用SQLDA描述符范围的游标操作1.1 oracle 案例1.1.1 使用游标获取数据1.1.2 对于fetch结果集怎么去利用 1.2 LightDB 案例1.2.1 使用游标获取数据1.2.2 对于fetch结果集怎么去利用 3 总结&#xff1a;不同项 二、使用SQLDA描述符范围的游标操作2.1 Oracle样例2…

KMPlayer v2024.4.25.13 官方版 (万能播放器)

前言 KMPlaye通过各种插件扩展KMP可以支持层出不穷的新格式。KMPlaye强大的插件功能&#xff0c;直接从Winamp继承的插件功能&#xff0c;能够直接使用Winamp的音频&#xff0c;输入&#xff0c;视觉效果插件&#xff0c;而通过独有的扩展能力&#xff0c;只要你喜欢&#xff…