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

四、Django模型

Model

Model (模型) 简而言之即数据模型,是一个Django应用的核心。模型不是数据本身(比如数据表里的数据), 而是抽象的描述数据的构成和逻辑关系。

每个Django的模型(model)实际上是个类,继承了models.Model。每个Model应该包括属性(字段),关系(比如单对单,单对多和多对多)和方法。当你定义好Model模型后,Django的接口会自动帮你在数据库生成相应的数据表(table)。

模型的组成

一个标准的Django模型分别由模型字段、META选项和方法三部分组成。我们接下来对各部分进行详细介绍。Django官方编码规范建议按如下方式排列:

  • 定义的模型字段:包括基础字段和关系字段
  • 自定义的Manager方法:改变模型
  • class Meta选项: 包括排序、索引等等(可选)。
  • def str():定义单个模型实例对象的名字(可选)。
  • def save():重写save方法(可选)。
  • def get_absolute_url():为单个模型实例对象生成独一无二的url(可选)
  • 其它自定义的方法

模型的字段

models.Model提供的常用模型字段包括基础字段和关系字段。

基础字段

CharField()

from django.db import modelsclass MyModel(models.Model):my_char_field = models.CharField(max_length=100)
  • max_length:必填参数,用于限定字段可以存储的字符的最大长度。
  • blank:布尔值,默认为 False。如果设置为 True,则该字段允许为空。
  • null:布尔值,默认为 False。如果设置为 True,则 Django 在数据库中使用 NULL 来存储空值。
  • default:字段的默认值。
  • editable:布尔值,默认为 True。如果设置为 False,这个字段将不会在 Django 管理界面或者任何 ModelForm 中显示。
  • help_text:用于在表单字段旁边显示额外的帮助文本。
  • verbose_name:为字段设置一个人类可读的名字。

TextField()

from django.db import modelsclass MyModel(models.Model):my_text_field = models.TextField()
  • 适合大量文本,max_length = xxx选项可选。
  • blank:布尔值,默认为 False。如果设置为 True,则该字段允许为空。
  • null:布尔值,默认为 False。如果设置为 True,则 Django 在数据库中使用 NULL 来存储空值。
  • default:字段的默认值。
  • editable:布尔值,默认为 True。如果设置为 False,这个字段将不会在 Django 管理界面或者任何 ModelForm 中显示。
  • help_text:用于在表单字段旁边显示额外的帮助文本。
  • verbose_name:为字段设置一个人类可读的名字。

DateField() 和DateTimeField()

from django.db import modelsclass MyModel(models.Model):my_date_field = models.DateField()
  • DateField 用于存储日期,不包括时间

  • 可通过default=xx选项设置默认日期和时间。

  • 对于DateTimeField: default=timezone.now - 先要from django.utils import timezone

  • 如果希望自动记录一次修改日期(modified),可以设置: auto_now=True

  • 如果希望自动记录创建日期(created),可以设置auto_now_add=True

  • auto_now_add:布尔值,默认为 False。如果设置为 True,则当对象首次被创建时,字段会被设置为当前日期。

  • auto_now:布尔值,默认为 False。如果设置为 True,则每次对象保存时,字段会被设置为当前日期。

  • blank:布尔值,默认为 False。如果设置为 True,则该字段允许为空。

  • null:布尔值,默认为 False。如果设置为 True,则 Django 在数据库中使用 NULL 来存储空值。

  • default:字段的默认值。这可以是一个日期值,或者一个返回日期值的可调用对象。

  • editable:布尔值,默认为 True。如果设置为 False,这个字段将不会在 Django 管理界面或者任何 ModelForm 中显示。

  • help_text:用于在表单字段旁边显示额外的帮助文本。

  • verbose_name:为字段设置一个人类可读的名字。

EmailField()

  • 如不是必填项,可设置blank = True和default = ‘。一般Email用于用户名应该是唯一的,建议设置unique = True
  • max_length:用于限定字段可以存储的字符的最大长度。默认值为 254,这是因为这是标准电子邮件地址的最大长度。
  • blank:布尔值,默认为 False。如果设置为 True,则该字段允许为空。
  • null:布尔值,默认为 False。如果设置为 True,则 Django 在数据库中使用 NULL 来存储空值。
  • default:字段的默认值。
  • editable:布尔值,默认为 True。如果设置为 False,这个字段将不会在 Django 管理界面或者任何 ModelForm 中显示。
  • help_text:用于在表单字段旁边显示额外的帮助文本。
  • verbose_name:为字段设置一个人类可读的名字

IntegerField()

  • IntegerField 是一个用于存储整数的字段。
  • 它适用于那些需要存储整数的地方,比如年龄、数量等。
  • 在数据库层面,通常对应于整数类型。

SlugField()

  • SlugField 是一个用于存储“slug”的字符串字段,通常用于URLs。
  • “Slug”是一个短标签,通常只包含字母、数字、下划线或连字符,用于提高URL的可读性。
  • 它默认最大长度为50个字符,并且可以用max_length参数自定义。
  • 通常,SlugField会有一个unique_for_date参数,用于确保在给定日期范围内slug的唯一性。

URLField()

  • URLField 是一个用于存储URL的字符串字段。
  • 它默认最大长度为200个字符,也可以用max_length参数自定义。
  • 在数据库层面,它通常对应于一个VARCHAR字段。

BooleanField()

  • BooleanField 是一个用于存储布尔值(True/False)的字段。
  • 它通常用于表示“是/否”或“开/关”这样的二值状态。
  • 在数据库层面,通常对应于一个布尔类型。

FileField()

FileField(upload_to=None, max_length=100) - 文件字段

  • upload_to = “/some folder/”:上传文件夹路径

  • max_length = xxxx:文件最大长度

ImageField()

ImageField (upload_to=None, max_length=100,)- 图片字段

  • upload_to = “/some folder/”: 指定上传图片路径

关系字段

OneToOneField()

OneToOneField(to, on_delete=xxx, options) - 单对单关系

  • to必需指向其他模型

  • 必需指定on_delete选项(删除选项): i.e, “on_delete =

  • models.CASCADE” or “on_delete = models.SET_NULL” .

  • 可以设置 “related_name = xxx” 便于反向查询。

ForeignKey()

ForeignKey(to, on_delete=xxx, options) - 单对多关系

  • to必需指向其他模型.

  • 必需指定on_delete选项(删除选项): i.e, “on_delete = models.CASCADE” or “on_delete = models.SET_NULL” .

  • 可以设置”default = xxx” or “null = True” ;

  • 如果有必要,可以设置 “limit_choices_to = “,

  • 可以设置 “related_name = xxx” 便于反向查询。

ManyToManyField()

ManyToManyField(to, options) - 多对多关系

  • to 必需指向其他模型,比如 User or ‘self’ .
  • 设置 “symmetrical = False “ 表示多对多关系不是对称的,比如A关注B不代表B关注A
  • 设置 “through = ‘intermediary model’ “ 如果需要建立中间模型来搜集更多信息。
  • 可以设置 “related_name = xxx” 便于反向查询。

对于OneToOneField和ForeignKey, on_delete选项和related_name是两个非常重要的设置,前者决定了了关联外键删除方式,后者决定了模型反向查询的名字。

on_delete删除选项

Django提供了如下几种关联外键删除选项, 可以根据实际需求使用。

  • CASCADE:级联删除。当你删除publisher记录时,与之关联的所有都会被删除。
  • PROTECT: 保护模式。如果有外键关联,就不允许删除,删除的时候会抛出ProtectedError错误,除非先把关联了外键的记录删除掉。
  • SET_NULL: 置空模式。删除的时候,外键字段会被设置为空。
  • SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值。
  • SET(): 自定义一个值。
  • DO_NOTHING:什么也不做。删除不报任何错,外键值依然保留,但是无法用这个外键去做查询

related_name选项

  • related_name 选项用于指定从相关模型反向引用时的名称。这个选项允许你从一个关系的“另一边”引用对象,而不必直接通过模型的字段名。
from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)class Book(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')

在这个例子中,Book 模型有一个指向 Author 模型的 ForeignKey。通过设置 related_name=‘books’,我们可以在 Author 实例上使用 books 属性来获取所有与之相关的 Book 实例。

重要特性

如果没有指定 related_name,Django 会自动创建一个默认的名称,格式为 <model_name>_set,其中 <model_name> 是关系的另一端的模型的小写名称(例如,如果 Book 模型有一个指向 Author 的 ForeignKey,默认的 related_name 将是 book_set)。

如果你的模型被用于多个 ForeignKey 或 ManyToManyField,为每个关系指定一个唯一的 related_name 是一个好的实践,这样可以避免命名冲突。

如果你不希望为关系创建反向名称,可以将 related_name 设置为 ‘+’ 或者 None(在 Django 1.9 及以后版本中)。

示例

class Author(models.Model):name = models.CharField(max_length=100)class Book(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='publications')class Article(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='articles')

在这个例子中,Author 可以通过 publications 属性获取其所有的 Book 实例,通过 articles 属性获取其所有的 Article 实例。

使用 related_name:

author = Author.objects.get(name="Jane Doe")
author_books = author.publications.all()  # 获取所有与Jane Doe相关的书籍
author_articles = author.articles.all()   # 获取所有与Jane Doe相关的文章

如果不使用 related_name:

author_books = Book.objects.filter(author=author)  # 使用默认的related_name
author_articles = Article.objects.filter(author=author)  # 使用默认的related_name

模型的META选项

在 Django 中,每个模型都有一个内部类叫做 Meta,它用于包含模型的元数据,即关于模型自身的配置信息。这些元数据不会直接转换为数据库字段,但它们会影响模型的行为,尤其是在数据库层面和 Django 管理界面中的表现。

以下是一些常用的 Meta 选项及其用途:

abstract

类型:布尔值
默认值:False
用途:如果设置为 True,则模型会被视为抽象基类,不会创建对应的数据库表。

app_label

类型:字符串
用途:指定模型所属的应用的名称。通常不需要设置,因为 Django 会自动确定。

db_table

类型:字符串
用途:指定模型在数据库中对应的表名。如果不设置,Django 会自动生成表名,格式为 <app_label>_<model_name>。

db_tablespace

类型:字符串
用途:指定模型使用的数据库表空间。如果数据库支持表空间,这个选项可以用来指定模型表应该使用的表空间。

get_latest_by

类型:字符串或字段名
用途:指定一个字段名,通常是日期或时间字段,以便使用 Model.objects.latest() 方法时按照该字段排序获取最新记录。

managed

类型:布尔值
默认值:True
用途:如果设置为 False,Django 不会为该模型创建或删除数据库表。这在模型映射到预先存在的数据库表或是在非数据库数据源上时很有用。

order_with_respect_to

类型:字段名
用途:用于多对多关系,允许对象根据指定的字段进行排序。

ordering

类型:字符串或字段列表
用途:指定对象默认的排序方式。例如,[‘name’] 表示按照 name 字段的升序排序。

permissions

类型:二元组列表
用途:为模型添加额外的权限。每个元组应该包含两个元素:权限代码和人类可读的权限名称。

proxy

类型:布尔值
默认值:False
用途:如果设置为 True,则模型会被视为代理模型。它将继承其父模型的字段,但不会创建新的数据库表。

unique_together

类型:字段名列表的列表
用途:指定字段组合的唯一性约束。例如,unique_together = [(‘username’, ‘email’)] 表示 username 和 email 的组合必须是唯一的。

verbose_name

类型:字符串
用途:为模型设置一个人类可读的单数名称。

verbose_name_plural

类型:字符串
用途:为模型的复数名称设置一个人类可读的名称。

以下是一个包含 Meta 类的模型示例:

from django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=50)last_name = models.CharField(max_length=50)class Meta:ordering = ['last_name']verbose_name_plural = "people"

模型的方法

在 Django 中,模型不仅仅是数据库表的简单映射;它们也是具有行为的 Python 对象。你可以为模型添加自定义的方法来执行各种操作,比如计算字段值、处理相关对象,或者执行任何其他需要的业务逻辑。

以下是一些常见类型的模型方法及其用途:

自定义管理器方法

虽然不是直接在模型上定义的,但管理器方法是模型中经常使用的方法。它们允许你对查询集进行自定义操作。

from django.db import modelsclass BookManager(models.Manager):def title_count(self, keyword):return self.filter(title__icontains=keyword).count()class Book(models.Model):title = models.CharField(max_length=100)objects = BookManager()# 使用自定义管理器方法
book_count = Book.objects.title_count('django')

自定义实例方法

这些方法通常用于处理单个模型实例。

class Author(models.Model):name = models.CharField(max_length=100)books = models.ManyToManyField(Book)# book_count 方法返回与特定作者相关的书籍数量。def book_count(self):return self.books.count()

自定义类方法

类方法与实例方法不同,因为它们不需要特定的实例来调用。它们可以用来返回查询集或者执行与特定实例无关的操作。

class Book(models.Model):title = models.CharField(max_length=100)published_date = models.DateField()#recent_books 类方法返回最近30天内发布的书籍。@classmethoddef recent_books(cls):return cls.objects.filter(published_date__gte=datetime.now() - timedelta(days=30))

自定义静态方法

静态方法不依赖于类或实例的状态。它们用于执行一些不访问任何属性或方法的操作。

class Book(models.Model):title = models.CharField(max_length=100)
#is_valid_title 静态方法检查给定的标题是否有效。@staticmethoddef is_valid_title(title):return len(title) > 0

保存和删除钩子

Django 提供了 save 和 delete 方法的钩子,你可以在这些方法中添加自定义逻辑。

class Book(models.Model):title = models.CharField(max_length=100)def save(self, *args, **kwargs):do_something_before_save()super(Book, self).save(*args, **kwargs)do_something_after_save()def delete(self, *args, **kwargs):do_something_before_delete()super(Book, self).delete(*args, **kwargs)do_something_after_delete()

以下是一个综合了上述方法的模型示例:

from django.db import models
from datetime import datetime, timedeltaclass Author(models.Model):name = models.CharField(max_length=100)def get_books(self):return self.book_set.all()class Book(models.Model):title = models.CharField(max_length=100)authors = models.ManyToManyField(Author)published_date = models.DateField()def was_published_recently(self):return self.published_date >= datetime.now() - timedelta(days=30)@classmethoddef get_recent_books(cls):return cls.objects.filter(published_date__gte=datetime.now() - timedelta(days=30))def save(self, *args, **kwargs):if not self.title:raise ValueError("Book must have a title.")super(Book, self).save(*args, **kwargs)

相关文章:

四、Django模型

Model Model (模型) 简而言之即数据模型&#xff0c;是一个Django应用的核心。模型不是数据本身&#xff08;比如数据表里的数据), 而是抽象的描述数据的构成和逻辑关系。 每个Django的模型(model)实际上是个类&#xff0c;继承了models.Model。每个Model应该包括属性(字段)&…...

Telephony SS

1、补充业务概述 SS是补充服务的缩写,它包含呼叫转移、呼叫限制、呼叫等待、线路识别(CLIR)等。在IMS(IP多媒体子系统)网络中,它使用XCAP(XML配置访问协议)协议通过UT接口操纵SS数据。该协议允许授权用户在连接到IMS或连接到非IMS网络(例如公共互联网)时操纵与服务相…...

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h> #include <stdlib.h> void shellSort(int data[], int n){// 划分的数组&#xff0c;例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量&#xff0c;换值int temp;…...

C++(一)----C++基础

1.C的发展史 C语言诞生后&#xff0c;很快普及使用&#xff0c;但是随着编程规模增大且越来越复杂&#xff0c;并且需要高度的抽象和建模时&#xff0c;C语言的诸多短板便表现了出来&#xff0c;为了解决软件危机&#xff0c;上世纪八十年代&#xff0c;计算机界提出了oop&…...

C 语言面试题大汇总之华为面试题

文章目录 1. 局部变量能否和全局变量重名?2. 如何引用一个已经定义过的全局变量?3. 全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?4. 请写出下列代码的输出内容5. static 全局变量与普通的全局变量有什么区别?static 局部变量和普通局部变量有什么区别?s…...

Java:面向对象

继承 继承是一种面向对象编程&#xff08;OOP&#xff09;特性&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;继承另一个类&#xff08;称为父类或基类&#xff09;的属性&#xff08;如方法和字段&#xff09;。通过继承&#xff0c;子类可以复用父类的代…...

【区块链 + 基层治理】腾讯未来社区:区块链业主决策系统 | FISCO BCOS应用案例

腾讯未来社区是腾讯推出的智慧社区综合解决方案&#xff0c;致力于形成“互联网 社区”一站式解决方案&#xff0c;打造智慧社 区健康生态。为了解决物业管理领域的痛点&#xff0c;构建围绕居民、物业、政府和商业四个角色为核心的良好生态&#xff0c;以 信息平台及工具为纽…...

【Rust练习】13.数组

练习题来自&#xff1a;https://practice-zh.course.rs/compound-types/array.html 1 fn main() {// 使用合适的类型填空let arr: __ [1, 2, 3, 4, 5];// 修改以下代码&#xff0c;让它顺利运行assert!(arr.len() 4); }显然这个数组的长度是5. fn main() {// 使用合适的类…...

直流负载技术介绍

直流负载技术是一种用于控制和调节电力系统运行状态的重要技术。它主要通过对电力系统中的直流负载进行有效的管理和控制&#xff0c;以保证电力系统的稳定运行&#xff0c;提高电力系统的运行效率&#xff0c;降低电力系统的运行成本。 直流负载技术主要包括直流负载的检测、…...

FPGA低功耗设计

FPGA低功耗设计 文章目录 FPGA低功耗设计前言一、功耗类型1.1 动态功耗1.2 静态功耗1.3 浪涌功耗 二、系统级低功耗设计2.1 **多电压技术&#xff1a;**即工作频率、电压和功耗的关系2.2 系统时钟分配&#xff1a;2.3 软硬件划分2.4 p 或单元库选择 三、RTL级别低功耗设计3.1 并…...

Python Opencv: 基于颜色提取的印章分割

利用Python实现了一个图像处理功能&#xff0c;即批量提取图像中的印章区域&#xff1b;使用了颜色聚类的方法来提取颜色。 本代码也发布到了github&#xff0c;欢迎大家试用&#xff08;如果帮助&#xff0c;请star一下&#xff09;&#xff1a; GitHub - AICVHub/seal_seg_o…...

Codeforces Round 970 (Div. 3)(ABCDEF)

Codeforces Round 970 (Div. 3) A:Sakurakos Exams 签到 题意:给定1,2的数量,判断是否能用加减符号使得这些1,2计算出0 void solve() {cin>>n>>m;if(n%2)cout<<"NO\n";else{if(m%20||n)cout<<"YES\n";else cout<<"…...

springboot基于ssm+Jsp的人才招聘网站系统的设计与实现 jw2cs

目录 前言详细视频演示后端技术栈具体实现截图开发核心技术&#xff1a;开发工具核心代码部分展示系统设计操作可行性可行性论证试验方案源码获取 前言 &#x1f447;&#x1f3fb; 博主介绍&#xff1a;&#x1f447;&#x1f3fb; 全网粉丝50W,博客专家、CSDN特邀作者、CSDN…...

高质量共建“一带一路”!苏州金龙助力非洲交通驶向共同繁荣之旅

9月6日&#xff0c;中非合作论坛在北京落下帷幕。此次论坛&#xff0c;“高质量共建‘一带一路’”成为重要议题。截止至目前&#xff0c;苏州金龙海格客车已向阿尔及利亚、埃塞俄比亚、南非等所有参与共建“一带一路”的非洲国家累计出口客车14000台。从产品销售&#xff0c;到…...

嵌入式初学-C语言-数据结构--四

栈 1. 基本概念 栈是一种逻辑结构&#xff0c;是特殊的线性表。特殊在&#xff1a; 只能在固定的一端操作 只要满足上述条件&#xff0c;那么这种特殊的线性表就会呈现一种“后进先出”的逻辑&#xff0c;这种逻辑就被称为栈。栈 在生活中到处可见&#xff0c;比如堆叠的盘子…...

【HarmonyOS 4】应用性能优化

1. ArkTs 高性能编程 1.1 ArkTs 高性能编程规则 1.1.1 限制一些 TypeScript 的特性&#xff0c;比如需要不支持属性的动态变更、变量或参数需要明确的类型声明和返回值声明等。1.1.2 禁用 ts-ignore、ts-expect-error 等屏蔽编译校验的命令。1.1.3 开启 TypeScript 的严格模式…...

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作&#xff0c;…...

阅读笔记--Guiding Attention in End-to-End Driving Models(二)

端到端驾驶的注意力学习&#xff08;Attention Learning for End-to-End Driving&#xff09;关键内容学习 3.1 问题设置&#xff08;Problem Setup&#xff09; 模仿学习&#xff08;Imitation Learning, IL&#xff09;&#xff1a;介绍了模仿学习的概念&#xff0c;即通过…...

Linux: network: TCP: errno: EWOULDBLOCK

https://mzhan017.blog.csdn.net/article/details/108010013 这个errno的意思: 如果是send接口函数返回的错误,代表tcp socket的sending buffer满了,让应用程序等上一段时间重试send。 所以,这个产生的原因就不固定了: 可能是当前系统太忙,导致系统发包慢,buffer累积; 可…...

闲话“设计模式”

Q1、请详细介绍 软件架构设计模式&#xff08;智能化&#xff09;&#xff0c;应用程序设计模式&#xff08;自动化&#xff09;&#xff0c;编程语言设计模式&#xff08;人性化&#xff09;&#xff08;后面括号中 是我 希望 其 具有的特点&#xff09; 的概念&#xff0c;有…...

Sentence-BERT实现文本匹配【CoSENT损失】

引言 还是基于Sentence-BERT架构&#xff0c;或者说Bi-Encoder架构&#xff0c;但是本文使用的是苏神提出的CoSENT损失函数1。 点击来都是缘分&#xff0c;之前过时的方法可以不细看&#xff0c;别的文章可以不收藏&#xff0c;现在是最流行的方法&#xff0c;这篇文章建议收藏…...

业余考什么证书比较实用?

在业余时间里&#xff0c;获得一些有用的证书不仅能提升你的专业素养&#xff0c;还能增强你在职场上的竞争力。 特别是职业技能证书和行业认证证书&#xff0c;这两者受到了广大职场人士的高度关注。 一、业余时间考取的实用证书 行业认证证书主要针对特定行业或职业&#…...

16款facebook辅助工具,总有一款适合你!

Hey小伙伴们~&#x1f44b; 是不是想利用FB大展拳脚&#xff0c;却苦于不知道如何开始&#xff1f;别急&#xff0c;今天就给你们安利16个超实用的FB营销工具&#xff0c;涵盖了内容创建和发布的应用程序&#xff0c;以及数据追踪分析、商品销售等多个方面让你轻松get海外获客新…...

给网站发外链的好处,你了解多少?

在当今这个信息爆炸的互联网时代&#xff0c;网站优化和推广成为了每一个网站主不可忽视的重要环节。其中&#xff0c;给网站发外链&#xff0c;即在其他网站上设置指向自己网站的链接&#xff0c;是一种高效且被广泛采用的策略。那么&#xff0c;给网站发外链究竟能带来哪些好…...

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析&#xff1a; url中含有特殊字符 中文未编码 都有可能导致URL转换失败&#xff0c;所以需要对url编码处理 如下&#xff1a; guard let allowUrl webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时&a…...

excel分列

Excel中有这么几列&#xff0c;希望将每一列内容再分出3列&#xff1a; 可以通过以下步骤在 Excel 表格中将 B 到 F 列的内容拆分为每列的 3 列&#xff0c;分别为 pred_label、pred_score 和 pred_class&#xff1a; 确定数据结构&#xff1a;假设 B 列到 F 列中的内容都是按类…...

STM32 HAL DMA 中断碰到的问题

流程 串口收数据—>dma搬运到变量—>空闲中断----->接收完成 配置 dma中断全部去掉 串口中断开启 freertos中断全部去掉 时钟配置 代码 开启中断 // DMA 空闲检查 void receives_uaru_7(void) {RXU7 0;//清除中断标志HAL_UARTEx_ReceiveToIdle_DMA(&hua…...

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现&#xff0c;因为rasa本身是带有remindschedule模块的。不过经过一番折腾后&#xff0c;忽然发现&#xff0c;chatbot上实现的定时&#xff0c;语音助手不一定会有响应。因为&#xff0c;我目前语音助手的代码设置了长时间无应答会结束…...

AIoTedge边缘计算+边缘物联网平台

在数字化转型的浪潮中&#xff0c;AIoTedge边缘计算平台以其边云协同的架构和强大的分布式AIoT处理能力&#xff0c;正成为推动智能技术发展的关键力量。AIoTedge通过在数据源附近处理信息&#xff0c;实现低延迟、快速响应&#xff0c;增强了应用的实时性。同时&#xff0c;它…...

Java使用拷贝asset文件,解密,并用DexclassLoader加载执行

//asset中加密的apk文件重命名为index.html,拷贝到私有目录 //解密 //加载,执行apk中的方法 public static void handleByJava(Context context){File copyedFile new File(context.getFilesDir().getAbsolutePath() "/" "main.html");FileUtil.copyAss…...