django动态表技术(根据日期,年月日)方法二

方法一:
第一步:在models创建一个类,里边存放数据表中需要的字段,如下

class TemplateModel(models.Model):NowTime = models.CharField(max_length=5)name = models.CharFiedld(max_length=5)class Meta:abstract = True  # 基础类设置为抽象模型,不会生成实际数据库表

第二步:

class NewDynamicModel(object):#定义一个字典变量 _instance 用于存储已经创建过的动态模型类_instance = dict()#一个特殊的方法,重写Python对象实例化时的行为。当调用这个类时,实际上会执行 __new__ 方法而非 __init__ 方法#base_cls 在这段代码中是一个基础类(base class),它通常用于作为动态创建的新类的父类def __new__(cls, base_cls, date=None):# 将date转换if not date:current_date = datetime.now()month = str(current_date.month)day = str(current_date.day)date = f'{current_date.year}{month}{day}'#根据基础类名和格式化后的日期生成新类名,形如BaseModel_To_20220516new_cls_name = "%s_To_%s" % (base_cls.__name__, '_'.join(map(lambda x: x.capitalize(), date.split('_'))))#首先检查 new_cls_name 是否已经存在于 cls._instance 字典中。_instance 是一个字典,用于存储已创建的类实例if new_cls_name not in cls._instance:#获取 base_cls 类上的 Meta 类属性,并将其赋值给 new_meta_clsnew_meta_cls = base_cls.Meta#修改 new_meta_cls.db_table 属性,将其设置为 'table' 加上格式化后的日期字符串new_meta_cls.db_table = 'table' + date#model_cls 是通过 type() 函数动态创建的一个新类,new_cls_name:新创建类的名字#元组形式,表示新类继承自 base_cls 类,'__module__': 设置为当前类所在模块的名字model_cls = type(new_cls_name, (base_cls,),{'__tablename__': date, 'Meta': new_meta_cls, '__module__': cls.__module__})#将新创建的类实例添加到 cls._instance 字典中,键为 new_cls_name,这样在后续调用时可以直接通过名字获取到该类cls._instance[new_cls_name] = model_clsreturn cls._instance[new_cls_name]

第三步:我们在views.py中操作,我们获取当前时间作为第二步方法的参数,然后执行django的查询语句,由于我数据表中日期格式是varchar,我将日期转换一下,并进行排序取第一条。

    TodayModel = NewDynamicModel(TemplateModel)data = TodayModel.objects.all()sorted_data = sorted(data, key=lambda x: datetime.strptime(x.NowTime, '%Y/%m/%d %H:%M:%S'), reverse=True)latest_entry = sorted_data[0]

第四步:前端页面,接收views.py传来的数据,也就是第三步获得的数据,在前端页面js显示,我将input标签的name和value设置为和数据库字段名

function update_frame3(){$.ajax({url: '/AAA/update_frame3/',type: 'GET',dataType: 'json',success: function(response) {response.data.forEach(function(item) {//遍历对象item的所有可枚举属性,每次循环将当前属性名赋值给变量keyfor (var key in item) {// 检查该属性是否为item对象自身的属性if (item.hasOwnProperty(key)) {// 将值设置到表单中var inputElement = document.getElementById(key);if (inputElement) {inputElement.value = item[key];}}}});},});}

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

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

相关文章

从Oracle迁移到openGauss实战分享

介绍 ora2og 是一个将 Oracle 数据库迁移至 openGauss 的工具,主要编程语言为 perl,通过 perl DBI 模块连接 Oracle 数据库,自动扫描并提取其中的对象结构及数据,产生 SQL 脚本,通过手动或自动的方式应用到 openGauss…

信息系统项目管理师002:信息系统(1信息化发展—1.1信息与信息化—1.1.2 信息系统)

文章目录 1.1.2 信息系统1.信息系统及其特性2.信息系统生命周期 记忆要点总结 1.1.2 信息系统 信息系统是由相互联系、相互依赖、相互作用的事物或过程组成的具有整体功能和综合行为的统一体。在经济与社会活动中,经常使用“系统”的概念,例如&#xff0…

C# OpenCvSharp DNN 部署yoloX

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN 部署yoloX 效果 模型信息 Inputs ------------------------- name:images tensor:Float[1, 3, 640, 640] --------------------------------------------------------------- Outputs ---…

Flask python 开发篇:配置文件

配置文件相关使用介绍 一、相关介绍二、系统环境变量配置三、项目中用到的配置项3.1、直接写在主脚本里3.1、单独写在一个配置文件里 四、使用配置文件 一、相关介绍 一般来说,在执行flask run命令运行程序前,我们需要提供程序实例所在模块的位置 。 F…

Python实战:数字存储:选择合适的数据类型

在Python编程中,选择合适的数据类型来存储数字对于性能和内存使用至关重要。本文将深入探讨Python中的数字数据类型,包括整数(int)、浮点数(float)和复数(complex)。我们将通过具体的…

PostgreSQL教程(三十四):服务器管理(十六)之逻辑复制

逻辑复制是一种基于数据对象的复制标识(通常是主键)复制数据对象及其更改的方法。我们使用术语“逻辑”来与物理复制加以区分,后者使用准确的块地址以及逐字节的复制方式。PostgreSQL两种机制都支持。逻辑复制允许在数据复制和安全性上更细粒…

Cassandra 安装部署

文章目录 一、概述1.官方文档2. 克隆服务器3.安装准备3.1.安装 JDK 113.2.安装 Python3.3.下载文件 二、安装部署1.配置 Cassandra2.启动 Cassandra3.关闭Cassandra4.查看状态5.客户端连接服务器6.服务运行脚本 开源中间件 # Cassandrahttps://iothub.org.cn/docs/middleware/…

CI/CD笔记.Gitlab系列:2024更新后-设置GitLab导入源

CI/CD笔记.Gitlab系列 设置GitLab导入源 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_…

Spring Cloud + Nacos 集成Netty Socket.IO

项目需要集成实时消息通讯&#xff0c;所以尝试在项目中集成websocket。技术上选择了Socket.io&#xff0c;前/后端统一使用此开源项目来实现需求。 一、版本 spring cloud: 2022.0.4 注册中心&#xff1a; nacos Netty-Socket.io : 2.0.9 <dependency><groupI…

【C语言】InfiniBand驱动mlx4_register_interface函数

一、讲解 mlx4_register_interface函数是Mellanox InfiniBand驱动程序的一部分&#xff0c;这个函数的作用是注册一个新的接口(intf)到InfiniBand设备。这允许不同的子系统&#xff0c;如以太网或存储&#xff0c;能够在同一个硬件设备上注册它们各自需要的接口&#xff0c;在…

编程笔记 html5cssjs 008 HTML图片 名画欣赏

编程笔记 html5&css&js 008 HTML图片 名画欣赏 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;展示了名画欣赏的内容。主要包括页面的标题、样式定义和主体内容。其中&#xff0c;样式定义使用了CSS来控制页面的布局和外观&#xff0c;主体内容使用了结构化…

ASP.Net实现玩具管理(三层架构,两项数据相乘)

目录 演示功能&#xff1a; 点击启动生成页面 步骤&#xff1a; 1、建文件 ​编辑 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper&#xff08;对数据库进行操作&#xff09; 5、DAL数据访问层下的service文件 6、BLL业务逻辑层…

华为HCIE实验题库哪里有?Cloud相关证书咋样?

华为HCIE认证的含金量很高&#xff0c;这除了是因为华为自身的影响力之外&#xff0c;也是因为HCIE的考试难度大。 HCIE的实验考试长达八个小时&#xff0c;考的是实际操作和论述&#xff0c;要想拿下HCIE实验考试&#xff0c;不断练习是十分关键的。 而华为HCIE实验的题库哪…

通讯协议制定之交互方式、步骤介绍

文章目录 通讯协议制定之交互方式、步骤介绍1. 前言2. 通讯协议发送类型2.1 周期发送2.2 事件发送 3. 通讯协议数据包类型3.1 握手3.2 心跳3.1 数据包 4. 小结 通讯协议制定之交互方式、步骤介绍 1. 前言 通讯协议又称通信规程&#xff0c;是指通信双方对数据传送控制的一种约…

【Spring Boot 3】读取resource文件

【Spring Boot 3】读取resource文件 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或…

如何部署Python Flask并实现远程访问本地搭建web站点【内网穿透】

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

导出微软浏览器收藏的网页,并查看网页保存的登录密码

导出微软Edge浏览器收藏夹&#xff08;书签&#xff09;的步骤如下&#xff1a; 打开Microsoft Edge浏览器。右键点击浏览器收藏栏上的任意位置或使用快捷键Ctrl Shift O打开收藏夹管理页面。在收藏夹管理页面中&#xff0c;通常你会看到右上角或菜单区域有一个“…”或者三…

Axios中每次发送post请求前都会发送options请求

今天写前端的时候&#xff0c;发现每次post请求都会失败&#xff0c; 反复调试过后发现axios在每次发送post请求前都发送了options请求&#xff0c; 在网络搜罗了一大圈&#xff0c; 发现了原因是因为web页面发送了请求给vue后&#xff0c; vue再请求后端过程中发生了跨域&…

【算法】一维前缀和以及二维前缀和

目录 一维前缀和适用场景示例 二维前缀和适用场景一种情况另一种情况示例 一维前缀和 适用场景 求一段区间的和。 比如有一个数列 &#xff1a; 如果我们要求 [l,r]即某个区间内的数组和的时候&#xff0c;思路就是每遍历一个元素就进行求和&#xff0c;记录下加到al时的和…

Skywalking

1、简介 Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目&#xff0c; 2017年12月SkyWalking成为Apache国内首个个人孵化项目&#xff0c; 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目&#xff0c; 目前SkyWalking支持Java、 .Net、 …