Shallow Dreamer Blog

三层表头设计数据库方案

是的,除了使用单个数据表和一个表头字段对应表的方案,还有其他方式能够实现当前需求。可以根据不同的需求和复杂性选择更适合的方案。以下是几种不同的设计方案: 方案一:多表设计(范式化数据库设计) 这是典型的范式化设计,通过多个表来处理不同层次的数据以及表头映射关系。这种设计能更好地维护数据的完整性和查询性能,但复杂性相对较高。 表设计 Category表(大类) ...

drf数据校验批量写入

如果你已经在 Django 项目的设置中将每个请求设置为一个事务,结合你在序列化器中的实现可以确保事务的自动管理。这意味着每个请求都将在一个数据库事务中处理,以下是如何整合这个特性: 1. 在序列化器中进行逐一检查 你可以继续使用之前的自定义序列化器。在这里,我们不需要显式地使用 transaction.atomic(),因为 Django 会自动为每个请求处理事务。 2. 序列化器的...

根据参数设置不同的权限控制

如果已经使用用户的 session 实现了权限控制,并且现在需要在 Django 的 APIView 中添加基于 session 的权限控制,可以结合 Django 的权限系统和 permissions 机制实现。具体来说,你可以基于用户的权限信息或 session 数据来决定是否允许执行某个操作。 你可以通过重写 get_permissions 方法或直接在视图方法中手动检查用户的 se...

dayjs计算天数时间差

为了实现每天只提醒一次的功能,你可以结合 localStorage 来存储提醒的状态,这样可以确保在浏览器中存储上一次提醒的时间,并在每次页面加载时检查是否已经提醒过。如果没有提醒,则进行提醒并记录当天的日期。以下是实现的步骤: 代码实现 <template> <div> <p>当前时间: </p> <p>过...

删除不在数据库中的s3文件

为了提升性能,可以通过以下几种优化方式来加快清理不再被引用的S3文件的过程,特别是对于大规模文件操作和复杂数据库遍历的场景: 性能优化方案: 批量查询数据库: 避免一次性加载所有数据,而是分批次从数据库中获取数据,减少内存压力。例如,使用Django的iterator()方法来节省内存。 # 批量迭代获取数据库中的附件信息 def get_...

鼠标移出elselectv2下拉选择框收起

<template> <div v-for="(item, index) in selectData" :key="index" class="select-container"> <el-select-v2 v-model="selectedValues[index]" placeholder="请选择" ref...

前端实现选择文件夹保存文件

In web applications, including those built with Vue 3, downloading files typically saves them to the user’s default download directory. Due to browser security restrictions, web applications cannot...

timezone时间

在 Django 模型中,你可以使用 timezone.now 函数结合 timedelta 来设置时间字段的默认值为当前时区的当前时间的半年后。具体实现如下: from django.db import models from django.utils import timezone from datetime import timedelta def six_months_from_...

eltable合并测试

要实现只有当数据(例如 username)相同时才合并单元格,可以对 span-method 方法进行修改。以下是一个调整后的代码示例: <template> <el-table :data="tableData" :span-method="mergeRows" style="width: 100%"> <!--...

drf序列化

当您的模型以及其关联的外键模型都包含 UUID 字段时,确保这些 UUID 字段在序列化和 JSON 转换过程中正确处理非常重要。以下是一个综合的解决方案,适用于这种场景: 1. 确保序列化器正确处理 UUID 字段 为两个模型分别创建序列化器,并确保所有 UUID 字段都明确使用 UUIDField 进行序列化。 from rest_framework import serializ...