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

Django中的模型小总结:

from django.db import models
from django.urls import reverse# 自定义Manager方法
class HighRatingManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(rating=1)# CHOICES选项
class Rating(models.IntegerChoices):VERYGOOD = 1, 'Very Good'GOOD = 2, 'Good'BAD = 3, 'Bad'class Product(models.Model):# 数据表字段name = models.CharField('name', max_length=30)rating = models.IntegerField(max_length=1, choices=Rating.choices)# MANAGERS方法objects = models.Manager()high_rating_products =HighRatingManager()# META类选项class Meta:verbose_name = 'product'verbose_name_plural = 'products'# __str__方法def __str__(self):return self.name# 重写save方法#原本(父类manager)的save方法于保存对象到数据库中def save(self, *args, **kwargs):do_something()#在保存对象之前执行某些操作super().save(*args, **kwargs) #调用了父类的 save 方法do_something_else()# 定义单个对象绝对路径def get_absolute_url(self):return reverse('product_details', kwargs={'pk': self.id})# 其它自定义方法def do_something(self):

1.自定义的manager方法:

用途:特定需求添加额外的查询逻辑或方法

创建一个继承自models.Manager的新类,然后在这个类中定义需要的自定义查询方法。

例子:

class HighRatingManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(rating=1)
'''自定义一个类HighRatingManager继承models.Manager,并重写了get_queryset方法:返回评级(rating字段)为1的对象
其中:super().get_queryset()是调用父类Manager的get_queryset()方法;filter(rating=1)是对查询集的过滤操作。它告诉数据库只选择rating字段值为1的对象。
'''

 2.CHOICES选项:

用途:通常用于定义模型字段的可选值,它可以帮助限制字段的值,同时提供了在数据库中存储简短标识符而显示用户友好的文本描述的能力。

# CHOICES选项
class Rating(models.IntegerChoices):VERYGOOD = 1, 'Very Good'GOOD = 2, 'Good'BAD = 3, 'Bad'

每一个元组常量(等号前面大写的字符),有两个输入。第一个是选项即上面可见的1,2,3。第二个就是供用户看到的字符串(显示用户友好的文本描述的能力的体现)。

3.meta类选项:

作用:用于定义模型的元数据(metadata)

1.db_table:

指定模型映射到的数据库表的名称。

2.ordering:

指定模型在查询时的默认排序方式。

class Meta:ordering = ['name', '-rating']
#表示该模型按照name字段进行降序排列

3.manages:

默认为True,如果为False,Django 将不会为该模型管理数据库表。

4.permissions:

permissions = [('can_view', 'Can view model'),('can_change', 'Can change model'),
]
#'can_view' 和 'can_change' 是权限的代号(codename),它们是程序中引用这些权限的标识符。
#'Can view model' 和 'Can change model' 是这些权限的描述性名称,它们是显示给用户看的名称,通常用于用户界面和文档中。

4.数据表字段:

就是数据库里面的一列。分为基础字段和关系字段

1.基础字段:

  • CharField:用于存储较短的字符串,指定最大长度
models.CharField(max_length=100)  # 限制最大长度为100个字符
  • TextField:适用于存储较长的文本内容,没有最大长度限制,但是可以指定最大长度。
  • IntegerField, FloatField, DecimalField:分别用于存储整数、浮点数和固定精度的十进制数。
models.DecimalField(max_digits=8, decimal_places=2)
#最多8位数,小数点后2位
  • BooleanField:用于存储布尔值(True或False)
  • DateField, DateTimeField: 分别用于存储日期和日期时间。
  • EmailField: 用于存储电子邮件地址,自动验证格式。

要将普通字段设为必填字段,需要设置 blank=False或者null=False。

用default=''''设置默认值

2.关系字段:

  • ForeignKey: 用于定义多对一关系,将模型与另一个模型的主键关联起来。
class Author(models.Model):name = models.CharField(max_length=100)class Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.CASCADE)
#这个多对一的关联,一个作者可以对应多本书。on_delete=models.CASCADE表示当书被删除的时候,与之关联的作者也被删除
#'product_details'应该是在URL配置中定义的一个名字,与某个路径相关联,并且这个路径应该接受一个主键参数来显示特定产品的细节。
  • ManyToManyField: 用于定义多对多关系,允许一个模型关联多个目标模型实例
  • OneToOneField:用于定义一对一关系,每个对象实例关联到另一个唯一的对象实例。

5.manager方法:

可以包含继承的manger方法也可以引入自定义的manager方法

6.__str__方法:

当你使用 str() 函数或者在打印对象时候,会调用对象的 __str__ 方法来获取该对象的字符串表示形式(这里是对象的name属性)。(对象就是数据库里面的一行)

7.定义单个对象绝对路径:

 # 定义单个对象绝对路径def get_absolute_url(self):return reverse('product_details', kwargs={'pk': self.id})
#reverse 函数是 Django 提供的一个反向解析 URL 的工具,它接受一个视图的名称(path函数里面的name)和必要的参数(同一个name下不允许重复)来生成对应的 URL。

id是模型默认的主键字段。

相关文章:

Django中的模型小总结:

from django.db import models from django.urls import reverse# 自定义Manager方法 class HighRatingManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(rating1)# CHOICES选项 class Rating(models.IntegerChoices):VERYGOOD 1, Very …...

深入理解 RDMA 的软硬件交互机制

作者:羽京 一、前言 随着数据中心的飞速发展,高性能网络不断挑战着带宽与时延的极限,网卡带宽从过去的 10 Gb/s 、25 Gb/s 到如今的 100 Gb/s、200 Gb/s 再到下一代的 400Gb/s 网卡,其发展速度已经远大于 CPU 发展的速度。 为了…...

轻优图片编辑压缩官网 轻优图片编辑压缩

轻优图片编辑压缩是一个无需安装,可以直接在线压缩图片大小的网站。轻优图片编辑压缩网站可以快速把图片压缩到指定大小。 轻优图片编辑压缩官网网址:www.qingyoubianji.com 浏览器打开 www.qingyoubianji.com 网站,你会看到一个简洁的界面…...

封装el-table 基于element封装可配置JSON表格组件

基于element封装可配置JSON表格组件 话不多说直接贴代码&#xff0c;复制运行即可查看效果 子组件全部代码 <template><div class"custom-table"><el-table:data"tableData"borderstyle"width: 100%"size"mini"max-h…...

Springboot 开发之 Quartz 任务调度框架简介

引言 Quartz Scheduler是一个功能丰富的开源作业调度库&#xff0c;它允许开发人员以灵活的方式创建和管理定时任务。以下是对Quartz Scheduler的详细解析&#xff1a; 官网地址&#xff1a;https://www.quartz-scheduler.org/w3cschool 官方文档&#xff1a;https://www.w3c…...

详解Xilinx FPGA高速串行收发器GTX/GTP(4)--TX/RX接口的数据位宽和时钟设计

目录 1、时钟设计 2、TX接口 3、接口位宽与时钟的关系 4、时钟来源方案 5、TX端内部的时钟分频设计 6、RX接口 文章总目录点这里:《FPGA接口与协议》专栏的说明与导航 1、时钟设计 GT收发器内部比较复杂,所使用的时钟就不止一个,比较主要的时钟有两个,架构…...

idea个人常用快捷键设置

个人开发者自查便于新环境配置快速查阅&#xff0c;统一windows与mac快捷键设置&#xff0c;有相同习惯的同学可自取。如果有一天你的快捷键不好用了&#xff0c;请一定记得看这篇文章&#xff0c;整理不易&#xff0c;留下关注再走呗。 基本操作快捷键 操作中文名称操作名快捷…...

超实用 不再担心猫咪掉毛 一文教你养宠家庭空气净化器怎么选

一到夏天&#xff0c;家中的猫咪给你带来的不仅仅是温暖的陪伴&#xff0c;还有那挥之不去的宠物异味。普通空气净化器虽然能够应对一般的空气净化需求&#xff0c;但对于养猫家庭特有的挑战&#xff0c;如宠物毛发、皮屑和异味等&#xff0c;它们往往难以胜任。专业的宠物空气…...

深入理解HTTP/2:nghttp2库源码解析及客户端实现示例

文章目录 一、HTTP/2 特性实现&#xff1a;nghttp2 源码剖析1.1 二进制帧1.2 多路复用1.3 头部压缩1.4 服务器推送1.5 总结 二、使用 nghttp2 库创建一个 HTTP/2 客户端三、结语 在互联网时代&#xff0c;网络传输协议的作用至关重要。在本文中&#xff0c;我们将对 HTTP/2 的一…...

如何在印尼新闻媒体发布新闻稿件:通稿宣发的好处

如何在印尼新闻媒体发布新闻稿件&#xff1a;通稿宣发的好处 在全球化的时代&#xff0c;新闻稿件的发布和传播对于企业、组织或个人来说至关重要。尤其在印尼这样的东南亚国家&#xff0c;新闻媒体的力量不容忽视。本文将探讨在印尼新闻媒体发布新闻稿件的优势&#xff0c;以…...

如何在 Linux 系统上更改 SSH 服务端口以增强服务器安全性

SSH 服务器默认使用 22 端口&#xff0c;这使得攻击者可以轻松识别并尝试攻击 SSH 服务。为了增加服务器的安全性&#xff0c;建议更改默认的 SSH 端口。本文将详细介绍如何在 Linux 系统上更改 SSH 服务端口&#xff0c;并包含一些最佳实践和注意事项。 1. 检查新的 SSH 端口…...

c++11新特性 -nullptr

今天遇到一道不错的题目&#xff0c;主要讲了c11对nullptr的特性。 首先&#xff1a;nullptr 是C11引入的一个关键字&#xff0c;用于表示“空指针常量”&#xff0c;它是类型std::nullptr_t的唯一值。nullptr 的引入解决了C语言风格的空指针字面量&#xff08;如NULL或0&#…...

kubernets学习笔记——Kubernets 命令行工具 kubectl

目录 kubectl 的使用方法1、语法2、操作3、资源类型4、输出格式5、示例&#xff1a;常用操作6、示例&#xff1a;创建和使用插件 kubectl 的使用方法 Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。这个工具叫做 kubectl。通…...

Hadoop单机及集群部署

目录 一、Hadoop 单机模式部署1. 环境准备2. 安装 Java3. 下载并安装 Hadoop4. 配置环境变量5. 配置 Hadoop编辑 core-site.xml编辑 hdfs-site.xml编辑 mapred-site.xml编辑 yarn-site.xml 6. 格式化 Namenode7. 启动 Hadoop 服务8. 验证 Hadoop注意事项 二、Hadoop 集群模式部…...

使用es-hadoop同步hive和es之间数据

&#x1f4bb;近期在华为云连接es时的时候发现不能输入账号密码&#xff0c;后面联系华为工程师了解到&#xff0c;华为云默认是非安全模式&#xff0c;即不需要输入账号密码。 如果对你有所帮助&#xff0c;欢迎点赞收藏关注不迷路哦&#x1f493; 目录 使用es-hadoop同步h…...

Java - 泛型 + JUnit

一、泛型(参数化类型,在编译时确定) 泛型是一种可以接收数据类型的数据类型(可以这么理解) 作用&#xff1a; 1.能对加入到集合中的数据类型进行约束 2.遍历的时候&#xff0c;不需要进行类型转换&#xff0c;提高效率(因为遍历时&#xff0c;默认的是Object,需要进行类型转换的…...

vue3实现包含表格的Word文件导出

vue3实现包含表格的Word文件导出 近期遇到一个要求&#xff0c;需要在网页上导出Word文档&#xff0c;文档中有表格&#xff0c;也有普通的数据&#xff0c;查阅了很多资料&#xff0c;总算比较完美的解决了&#xff0c;记录一下 先上一下最终效果 演示视频 vue3项目根据Wor…...

【深度学习】TTS,CosyVoice,推理部署的代码原理讲解分享

文章目录 demo代码加载配置文件speech_tokenizer_v1.onnx(只在zero_shot的时候使用)campplus.onnx(只为了提取说话人音色embedding)`campplus_model` 的作用代码解析具体过程解析总结示意图CosyVoiceFrontEndCosyVoiceModel推理过程总体推理过程推理速度很慢: https://git…...

flask高频面试题

目录 高频面试题及答案1. 如何在Flask中处理数据库迁移&#xff1f;2. Flask如何处理文件上传&#xff1f;3. 如何在Flask中处理跨域请求&#xff08;CORS&#xff09;&#xff1f;4. 如何在Flask中实现用户认证&#xff1f;5. Flask如何处理会话&#xff1f;6. Flask如何处理表…...

尚硅谷谷粒商城项目笔记——五、使用docker安装mysql

五、使用docker安装mysql 注意&#xff1a; 因为电脑是AMD芯片&#xff0c;自己知识储备不够&#xff0c;无法保证和课程中用到的环境一样&#xff0c;所以环境都是自己根据适应硬件软件环境重新配置的&#xff0c;这里的虚拟机使用的是VMware。 使用 Docker 安装 MySQL 与安…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...