当前位置: 首页 > article >正文

Python学习第十八天

Django模型

  • 定义:模型是 Django 中用于定义数据库结构的 Python 类。每个模型类对应数据库中的一张表,类的属性对应表的字段。

  • 作用:通过模型,Django 可以将 Python 代码与数据库表结构关联起来,开发者无需直接编写 SQL 语句即可操作数据库。

常用字段

字段类型说明示例
CharField用于存储较短的字符串,必须指定 max_lengthname = models.CharField(max_length=100)
TextField用于存储大段文本,不需要指定最大长度。description = models.TextField()
IntegerField用于存储整数。age = models.IntegerField()
BooleanField用于存储布尔值(True/False)。is_published = models.BooleanField(default=False)
DateField用于存储日期(年月日)。birth_date = models.DateField()
DateTimeField用于存储日期和时间。created_at = models.DateTimeField(auto_now_add=True)
EmailField用于存储电子邮件地址,会自动验证格式。email = models.EmailField(max_length=254)
URLField用于存储 URL,会自动验证格式。website = models.URLField(max_length=200)
DecimalField用于存储固定精度的十进制数,需指定 max_digits 和 decimal_placesprice = models.DecimalField(max_digits=10, decimal_places=2)
FloatField用于存储浮点数。rating = models.FloatField()
ForeignKey用于定义多对一关系,指向另一个模型。author = models.ForeignKey(Author, on_delete=models.CASCADE)
OneToOneField用于定义一对一关系。profile = models.OneToOneField(Profile, on_delete=models.CASCADE)
ManyToManyField用于定义多对多关系。tags = models.ManyToManyField(Tag)
FileField用于上传文件。file = models.FileField(upload_to='uploads/')
ImageField用于上传图片,继承自 FileField,会自动验证是否为图片。photo = models.ImageField(upload_to='photos/')
UUIDField用于存储 UUID(通用唯一标识符)。id = models.UUIDField(primary_key=True, default=uuid.uuid4)
AutoField自动递增的整数字段,通常用于主键。id = models.AutoField(primary_key=True)
BigAutoField类似 AutoField,但支持更大的范围(64 位整数)。id = models.BigAutoField(primary_key=True)
SlugField用于存储短标签(URL 友好的字符串),通常用于 URL。slug = models.SlugField(unique=True)
BinaryField用于存储二进制数据。data = models.BinaryField()
DurationField用于存储时间间隔(如天数、小时数等)。duration = models.DurationField()
GenericIPAddressField用于存储 IPv4 或 IPv6 地址。ip_address = models.GenericIPAddressField()
JSONField用于存储 JSON 数据。metadata = models.JSONField()

常用参数

参数说明
max_length指定字段的最大长度(如 CharField)。
null如果为 True,数据库中将允许存储 NULL 值。
blank如果为 True,字段在表单中可以为空。
default指定字段的默认值。
unique如果为 True,字段值必须在表中唯一。
primary_key如果为 True,该字段将作为模型的主键。
choices提供一个可选的选项列表(如 GENDER_CHOICES = [('M', 'Male'), ('F', 'Female')])。
auto_now每次保存对象时自动设置为当前时间(常用于 DateTimeField)。
auto_now_add对象第一次创建时自动设置为当前时间(常用于 DateTimeField)。
upload_to指定文件上传的目录(用于 FileField 和 ImageField)。
on_delete指定外键关联的对象被删除时的行为(如 CASCADESET_NULL 等)。

注意:id 字段会自动生成,无需显式定义(Django 默认会添加一个自增的 id 主键,如果不是这种情况需要手动添加字段)

from django.db import modelsclass User(models.Model):username = models.CharField(max_length=100, unique=True)password = models.CharField(max_length=100)email = models.EmailField(unique=True)first_name = models.CharField(max_length=100)last_name = models.CharField(max_length=100)def __str__(self):return self.username

举个例子models中添加一个商品 类中有id(自动生成)、name、code、price、crate_time、update_time大家自己创建下 按照上面的命令

class Product(models.Model):# id 字段会自动生成,无需显式定义(Django 默认会添加一个自增的 id 主键)name = models.CharField(max_length=100, verbose_name="商品名称")code = models.CharField(max_length=50, unique=True, verbose_name="商品编码")price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="商品价格")create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")

Migrations

  • 定义:迁移是 Django 用来管理数据库模式变更的机制。每次修改模型后,Django 会生成一个迁移文件,记录模型的变化。

  • 作用:迁移文件允许你将数据库模式从一种状态更新到另一种状态,同时保留现有数据。

  • 生成迁移文件:使用 python manage.py makemigrations 命令,Django 会检测模型的变更,并生成相应的迁移文件。

    • 例如,修改user模型后,运行 makemigrations 会生成一个迁移文件,记录这些变更。

product例子生成表名:myapp_product

makemigrations 和 migrate 的关系

  • makemigrations:生成迁移文件,记录模型的变更。

  • migrate:应用迁移文件,将变更同步到数据库中。

  • 流程:

    1. 修改模型(如添加字段、修改字段类型等)。

    2. 运行 python manage.py makemigrations,生成迁移文件。(注意如果说有报错需要查看自己的settings.py中是否包含INSTALLED_APPS是否包含了myapp)

    3. 运行 python manage.py migrate,将迁移应用到数据库(可以查看数据库中建立的表,生成的表是app名称_对象名)。

相关文章:

Python学习第十八天

Django模型 定义:模型是 Django 中用于定义数据库结构的 Python 类。每个模型类对应数据库中的一张表,类的属性对应表的字段。 作用:通过模型,Django 可以将 Python 代码与数据库表结构关联起来,开发者无需直接编写 S…...

蓝桥杯备考:图论之Prim算法

嗯。通过我们前面的学习,我们知道了,一个具有n个顶点的连通图,它的生成树包括n-1个边,如果边多一条就会变成图,少一条就不连通了 接下来我们来学一下把图变成生成树的一个算法 Prim算法,我们从任意一个结…...

min_element用法

查找字典中的最小value值 auto max_it std::min_element(my_map.begin(), my_map.end(),[](const auto& a, const auto& b) {return a.second < b.second; // 查找最小值});其中&#xff0c;这是一个查找最小值的自定义函数 [](const auto& a, const auto&am…...

列表动态列处理

1、在initialize()方法里&#xff0c;获取列表控件&#xff0c;添加CreateListColumnsListener监听 public void initialize(){ BillList billlist(BillList)this.getControl("billlistap"); billlist.addCreateListColumnsListener(this::beforeCreateListColumns)…...

科普:WOE编码与One-Hot编码

WOE编码是业务逻辑与统计建模的结合&#xff0c;适合强业务导向的场景&#xff1b; One-Hot编码是数据驱动的特征工程&#xff0c;适合追求模型性能的场景。 编码方式核心价值典型案例WOE编码保留变量预测能力&#xff0c;适配线性模型银行违约预测逻辑回归One-Hot编码释放特征…...

【Go语言圣经2.6】

目标 概念 GOPATH模型 GOPATH&#xff1a;GOPATH 是一个环境变量&#xff0c;指明 Go 代码的工作区路径。工作区通常包含三个目录&#xff1a; src&#xff1a;存放源代码&#xff0c;按照导入路径组织。例如&#xff0c;包 gopl.io/ch2/tempconv 应存放在 $GOPATH/src/gopl.i…...

Python的基本知识

Python是一种广泛使用的高级编程语言&#xff0c;以下是其基本用法的介绍&#xff1a; 变量与数据类型 - 变量定义&#xff1a;直接赋值即可创建变量&#xff0c;如 x 5 &#xff0c; name "John" 。 - 数据类型&#xff1a;包括 int &#xff08;整数&#xf…...

QEMU源码全解析 —— 块设备虚拟化(4)

接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(3) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 类模板是创建类的模式_创建类是的模版-CSDN博客<...

34个适合机械工程及自动化专业【论文选题】

论文选题具有极其重要的意义&#xff0c;它直接关系到论文的质量、价值以及研究的可行性和顺利程度。选题明确了研究的具体领域和核心问题&#xff0c;就像给研究旅程设定了方向和目的地。例如&#xff0c;选择 “人工智能在医疗影像诊断中的应用” 这一选题&#xff0c;就确定…...

langchain框架

LangChain的架构分为多个层次&#xff0c;支持Python和JavaScript生态 基础层&#xff08;langchain-core&#xff09;&#xff1a;提供LLM抽象接口、表达式语言&#xff08;LCEL&#xff09;等核心机制&#xff0c;支持超过70种主流模型&#xff08;如GPT-4、Llama&#xff0…...

RHCE(RHCSA复习:npm、dnf、源码安装实验)

七、软件管理 7.1 rpm 安装 7.1.1 挂载 [rootlocalhost ~]# ll /mnt total 0 drwxr-xr-x. 2 root root 6 Oct 27 21:32 hgfs[rootlocalhost ~]# mount /dev/sr0 /mnt #挂载 mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# [rootlo…...

Mybatis3 调用存储过程

1. 数据库MySQL&#xff0c;user表 CREATE TABLE user (USER_ID int NOT NULL AUTO_INCREMENT,USER_NAME varchar(100) NOT NULL COMMENT 用户姓名,AGE int NOT NULL COMMENT 年龄,CREATED_TIME datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,CREATED_BY varchar(100) NOT NUL…...

解决 openeuler 系统 docker 下载慢,docker 镜像加速

一、步骤说明 1. 编辑 Docker 配置文件 Docker 的镜像源配置文件路径为 /etc/docker/daemon.json。如果该文件不存在&#xff0c;则需要先创建目录和文件。 # 创建目录&#xff08;如果不存在&#xff09; sudo mkdir -p /etc/docker# 编辑配置文件&#xff08;使用 nano 或…...

HiPixel开源AI驱动的图像超分辨率的原生macOS 应用程序,使用 SwiftUI 构建并利用 Upscayl 强大的 AI 模型

一、软件介绍 文末提供程序和源码下载 HiPixel是一个开源程序基于SwiftUI构建的macOS原生应用程序&#xff0c;用于AI驱动的图像超分辨率&#xff0c;并利用Upscayl的强大AI模型。 二、软件特征 具有 SwiftUI 界面的原生 macOS 应用程序使用 AI 模型进行高质量图像放大通过 G…...

Python 正则表达式模块 re

Python 正则表达式模块 re flyfish 一、正则表达式基础 1. 什么是正则表达式&#xff1f; 正则表达式&#xff08;Regular Expression, RE&#xff09;是一种用于匹配、查找和替换文本模式的工具&#xff0c;由普通字符&#xff08;如字母、数字&#xff09;和特殊字符&…...

[RN 实践有效]Expo+cross-env配置项目环境变量

首先,从中可以看出,cross-env的主要作用是跨平台设置环境变量,而Expo项目通常通过app.config.js或.env文件来管理这些变量。需要强调安装cross-env的必要性,以及如何在package.json中正确配置脚本命令。 接下来,用户的问题是关于Expo中cross-env的详细配置,因此需要分步骤…...

缓存和客户端数据存储体系(Ark Data Kit)--- 应用数据持久化(首选项持久化、K-V、关系型数据库)持续更新中...

Core File Kit做怎删改查操作不便&#xff0c;用Ark Data Kit。 功能介绍 ArkData &#xff08;方舟数据管理&#xff09;为开发者提供数据存储、数据管理和数据同步能力&#xff0c;比如联系人应用数据可以保存到数据库中&#xff0c;提供数据库的安全、可靠以及共享访问等管…...

ES 使用geo point 查询离目标地址最近的数据

需求描述&#xff1a;项目中需要通过经纬度坐标查询目标地所在的行政区。 解决思路大致有种&#xff0c;使用es和mysql分别查询。 1、使用es进行查询 将带有经纬度坐标的省市区数据存入es中&#xff0c;mappings字段使用geo point类型&#xff0c;索引及查询dsl如下。 geo p…...

本地部署OpenManus及原理介绍

概述&#xff1a; 最近Minaus特别火&#xff0c;随后开源社区就有项目尝试复刻Minaus&#xff0c;项目名称为OpenManus&#xff0c;原理是用推理模型为决策者&#xff0c;将我们输入的问题进行分解后调用本地工具执行。 OpenManus安装&#xff1a; 本人在Ubuntu桌面版本上安装…...

高效手机检测:视觉分析技术的优势

在当今社会&#xff0c;手机已成为人们日常生活和工作中不可或缺的工具。然而&#xff0c;在某些特定场合&#xff0c;如考场、工作场所等&#xff0c;手机的使用却可能带来负面影响。因此&#xff0c;如何有效监测和防止在这些场合偷用手机的行为&#xff0c;成为了一个亟待解…...

Java 多线程编程:提升系统并发处理能力!

多线程是 Java 中实现并发任务执行的关键技术&#xff0c;能够显著提升程序在多核处理器上的性能以及处理多任务的能力。本文面向初级到中级开发者&#xff0c;从多线程的基本定义开始&#xff0c;逐步讲解线程创建、状态管理、同步机制、并发工具以及新兴的虚拟线程技术。每部…...

Linux实时内核稳定性案例

稳定性问题分析 RT_RUNTIME_SHARE案例死锁问题Linux-rt下卡死之hrtimer分析Linux内核宕机案例 -mmap空指针Linux Hung Task分析过程...

解决 VSCode SSH 连接报错:“REMOTE HOST IDENTIFICATION HAS CHANGED” 的问题

问题描述 在使用 VSCode 通过 SSH 连接远程服务器时&#xff0c;我们可能会遇到类似如下的错误日志&#xff1a; WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! ... Offending ED25519 key in C:\Users\DELL/…...

Spring Boot配置类原理、Spring Boot核心机制理解,以及实现自动装置的底层原理

目的:从底层源码角度分析 Spring Boot 配置类以及自动装载的底层原理 文章目录 1. Spring Boot 配置类实现自动装载1.1 @Configuration注解1.2 @Configuration 注解完成 bean 注入流程图1.3 @ConfigurationProperties注解赋值2. Spring Boot的核心机制:自动装配2.1 @SpringBo…...

淘宝API vs 爬虫:合规获取实时商品数据的成本与效率对比

以下是淘宝 API 和爬虫在合规获取实时商品数据方面的成本与效率对比&#xff1a; 成本对比 淘宝 API 开发成本&#xff1a;需要申请开发者账号并获取 API 权限&#xff0c;部分敏感或高频访问的接口可能需要额外的审核或付费。开发过程中需要按照平台规定进行编程&#xff0c;相…...

01-Canvas-使用fabric初始

fabric官网&#xff1a; https://fabric5.fabricjs.com/demos/ 创建画布并绘制 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…...

CMake简单入门

简介 CMake 是一个开源的跨平台构建系统生成工具&#xff0c;旨在简化和自动化项目的构建过程。它主要用于管理和控制软件构建的过程&#xff0c;特别是在处理复杂的项目结构和多个平台时。CMake 并不直接进行编译或链接&#xff0c;而是生成本地构建系统所需的文件&#xff0…...

树莓派 连接 PlutoSDR 教程

在树莓派5上安装PlutoSDR&#xff08;ADALM-Pluto&#xff09;的驱动程序&#xff0c;主要需要安装相关的库和工具&#xff0c;以便与PlutoSDR通信&#xff0c;比如libiio和libad9361&#xff0c;并确保系统能够识别设备。由于树莓派5运行的是基于Linux的系统&#xff08;通常是…...

【时时三省】(C语言基础)用printf函数输出数据3

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 ( 5 ) e格式符。 用格式声明%e指定以指数形式输出实数。如果不指定输出数据所占的宽度和数字部分的小数位数&#xff0c;许多C编译系统&#xff08;如VisualC&#xff09;会自动给出数字部分…...

Git使用(二)--如何配置 GitHub 远程仓库及本地 Git 环境

在日常的开发过程中&#xff0c;使用版本控制工具 Git 是一个非常重要的技能&#xff0c;特别是对于管理和协作开发。通过 GitHub&#xff0c;我们可以轻松地进行代码版本管理和共享。这篇博客将带您一步步学习如何配置 Git 环境并将本地仓库与 GitHub 远程仓库连接起来。 一、…...