使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构

news2025/1/11 1:17:40

可以把ForeignKey()的第1个参数设置为值 “self” 实际形成数据表记录的父子层次结构。

下面是一个简单的实例:
在文件 E:\Python_project\P_001\myshop-test\myshop\app1\models.py 中写入下面的代码:

from django.db import models

# Create your models here.


class Folder(models.Model):
    name = models.CharField(max_length=50)
    parent = models.ForeignKey("self", null=True, blank=True, on_delete=models.DO_NOTHING, related_name="sub_folders")

    def __str__(self):
        return self.name

启动数据库…

然后执行数据库迁移指令:

CD E:\Python_project\P_001\myshop-test\myshop
E:
python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

在这里插入图片描述
接下来在文件 E:\Python_project\P_001\myshop-test\myshop\sql_test_4.py 中写入下面的代码:

import os
import django

# 设置Dango运行时需要的环境变量DJANGO_SETTINGS_MODULE
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')

# 加载Django的设置
django.setup()

# 导入模型
from app1.models import Folder

# 创建顶级数据表记录
folder1 = Folder.objects.create(name='Folder 1')

# 创建子数据表记录
sub_folder1 = Folder.objects.create(name='Sub Folder 1', parent=folder1)
sub_folder2 = Folder.objects.create(name='Sub Folder 2', parent=folder1)

# 创建更深层次的子数据表记录
sub_sub_folder = Folder.objects.create(name='Sub Sub Folder', parent=sub_folder1)

运行sql_test_4.py后,数据库表的记录如下:
在这里插入图片描述
从上面的数据库表记录的id和parent_id其实已经可以看出结构关系了。

接下来,在文件E:\Python_project\P_001\myshop-test\myshop\sql_test_5.py中写入下面的代码:

import os
import django

# 设置Dango运行时需要的环境变量DJANGO_SETTINGS_MODULE
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')

# 加载Django的设置
django.setup()

# 导入模型
from app1.models import Folder

# 获取最深层的数据表记录
folder = Folder.objects.get(name='Sub Sub Folder')
print("最深层的数据表记录的name为:", end='')
print(folder)
print('\n')

# 获取最深层的数据表记录的上一层父级数据表记录
parent_folder = folder.parent
print("Sub Sub Folder的上一层父级数据表记录的name为:", end='')
print(parent_folder)
print('\n')

# 获取最深层的数据表记录的上一层的上一层父级数据表记录
parent_parent_folder = parent_folder.parent
print("Sub Sub Folder的上一层的上一层的父级数据表记录的name为:", end='')
print(parent_parent_folder)
print('\n')

input('Press Enter to exit...')

然后运行,运行结果如下:
在这里插入图片描述

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

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

相关文章

如何保证消息的可靠性+延迟队列(TTL+死信队列+延迟队列)

目录 1.如何保证消息的可靠性 1.1.消息的可靠投递 confirm机制 return机制 1.2.如何保证消息在队列中不丢失 1.3.确保消息能可靠的被消费掉 2.延迟队列 2.1.TTL 2.2.死信队列 2.3.延迟队列 3.如何防止消费者重复消费消息 1.如何保证消息的可靠性 1.1.消息的可靠投递…

element-ui 使用 el-descriptions

<el-descriptions :column"2" border size"mini" style"margin-top: 10px;" :labelStyle"{width: 123px}" :contentStyle"{width:42%}"><el-descriptions-item label"选择项目"><el-select size&…

花了整整一周,用新工具制作的进销存管理系统,比买来的好用

进销存简单点说就是进货、库存、出货的管理&#xff01;复杂一点还会牵扯日常交易。一般情况下&#xff0c;中小型企业或者涉及仓库的商贸、电商、制造、批发、零售等相关行业都会用到。 看似很简单&#xff0c;但涉及的领域却很广泛。 那么如何有效的管理企业的进销存数据&am…

UWB定位算法对比:TDOA算法和TWR算法对比,两种算法优缺点分析

UWB定位是基于时间飞行的算法&#xff08;飞行时间&#xff0c;TOF&#xff09;。测量一个UWB定位标签和多个UWB定位基站之间的光传播时间。至少需要三个定位基站才能使用三边法精确定位标签的位置。UWB定位基站和定位标签之间也必须保持直线和可视无遮挡。在UWB定位中&#xf…

Python源码剖析:深度探索Cpython对象-达观数据

CPython 是 Python 社区的标准&#xff0c;其他版本的 Python&#xff0c;比如 pypy&#xff0c;都会遵行 CPython 的标准 API 实现。想要更深入的认识 Python&#xff0c;就需要了解 CPython 的源码实现。本文将从 CPython 的对象构造器开始入手&#xff0c;带大家揭开 CPytho…

工作有感:莫名的IT培训班生涯

欢迎关注博主 六月暴雪飞梨花 或加入【六月暴雪飞梨花】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术…

什么是『知识管理系统』?为什么企业需要搭建知识管理系统?

你的企业或团队在知识迁移的过程中有遇到过以下问题吗&#xff1f; 1、花费过长时间的员工培训&#xff1a;当新员工入职时&#xff0c;传统的培训方法可能需要大量时间和资源。而且&#xff0c;由于知识可能分散在各种文档、手册和资源中&#xff0c;培训过程变得更加复杂。这…

Go Frame 2.3驱动全栈前后端分离管理系统的创新突破

基于新的Go Frame 2.3框架开发的全栈前后端分离的管理系统——GFast-V3&#xff0c;正以其创新性和突破性的特点引起了广泛关注。该系统通过将前端与后端解耦&#xff0c;实现了更高效、可扩展的开发模式&#xff0c;为企业和开发者带来了新的开发体验。 GFast-V3系统介绍 gfa…

重磅预告!Apache DolphinScheduler 3.2.0 新功能“剧透”

近期&#xff0c;Apache DolphinScheduler 将迎来 3.2.0 版本的到来。本次发版为大版本发布&#xff0c;将会带来众多大家期待已久的新功能和新改进。为了让用户提前感知到新版本的变化&#xff0c;社区特意提前“剧透”新版本的重要 feature&#xff0c;并制作了视频进行介绍。…

unity的CommandBuffer介绍

大家好&#xff0c;我是阿赵。   之前介绍过使用PostProcessing来做屏幕后处理效果。我们不一定要用PostProcessing来做后处理效果。   PostProcessing功能强大&#xff0c;比如不同的layer控制不同的屏幕效果&#xff0c;比如可以使用PostProcessVolume的非全局效果达到某…

【三维重建】【深度学习】NeuS总览

【三维重建】【深度学习】NeuS总览 论文提出了一种新颖的神经表面重建方法&#xff0c;称为NeuS&#xff0c;用于从2D图像输入以高保真度重建对象和场景。在NeuS中建议将曲面表示为有符号距离函数(SDF)的零级集&#xff0c;并开发一种新的体绘制方法来训练神经SDF表示&#xff…

【Distributed】分布式ELK日志文件分析系统(一)

文章目录 一、ELK 概述1. 为什么要使用 ELK2. 完整日志系统基本特征3. ELK 简介3.1 ElasticSearch&#xff08;ES&#xff09;3.2 Kiabana3.3 Logstash3.4 其它组件Filebeat缓存/消息队列Fluentd 4. ELK 的工作原理5. Linux 系统内核日志消息的优先级别 二、 部署 ELK 集群服务…

二叉树题目:合并二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;合并二叉树 出处&#xff1a;617. 合并二叉树 难度 3 级 题目描述 要求 给定两个二叉树 root1 \texttt{root1…

java项目之多人命题系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的多人命题系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

zabbix部署及应用(自定义监控内容,zabbix 自动发现与自动注册,zabbix 代理服务器,Zabbix 高可用集群)

zabbix部署及应用 一、添加 zabbix 客户端主机1、服务端和客户端都配置时间同步2、服务端和客户端都设置 hosts 解析3、设置 zabbix 的下载源&#xff0c;安装 zabbix-agent24、修改 agent2 配置文件5、启动 zabbix-agent26、在服务端验证 zabbix-agent2 的连通性7、常用的键值…

一、对象的概念(1)

本章概要 抽象接口服务提供封装 抽象 “我们没有意识到惯用语言的结构有多大的力量。可以毫不夸张地说&#xff0c;它通过语义反应机制奴役我们。语言表现出来并在无意识中给我们留下深刻印象的结构会自动投射到我们周围的世界。” – Alfred Korzybski (1930) 计算机革命的起…

分布式锁【 基于synchronized锁解决超卖问题、分布式锁解决方案、悲观锁实现的分布式锁】(二)-全面详解(学习总结---从入门到深化)

目录 分布式锁问题_演示问题 基于synchronized锁解决超卖问题 分布式锁解决方案 分布式锁实现方案 分布式锁解决方案_数据库悲观锁实现的分布式锁 项目中使用for update 分布式锁问题_演示问题 启动订单服务9090 启动订单服务9091 创建两个SpringBoot服务 启动Nginx服务 下载N…

火山引擎云搜索服务升级云原生新架构;提供数十亿级分布式向量数据库能力

从互联网发展伊始&#xff0c;搜索技术就绽放出了惊人的社会和经济价值。随着信息社会快速发展&#xff0c;数据呈爆炸式增长&#xff0c;搜索技术通过数据收集与处理&#xff0c;满足信息共享与快速检索的需求。 云搜索服务 ESCloud 是火山引擎提供的完全托管在线分布式搜索服…

OJ练习第135题——下降路径最小和

下降路径最小和 力扣链接&#xff1a;931. 下降路径最小和 题目描述 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一行选择…

永磁同步电机磁场定向控制(FOC)及Matlab/Simulink仿真分析

前言 做永磁同步电机控制绕不开FOC&#xff0c;本章节主要介绍FOC控制的基本原理、坐标变换以及永磁同步电机在同步旋转坐标系下的数学模型&#xff0c;并通过Matlab/Simulink进行永磁同步电机FOC控制算法的仿真分析。 01 FOC的基本原理 磁场定向控制&#xff08;Field-Ori…