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

这篇具有很好参考价值的文章主要介绍了使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可以把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

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

使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构,Django,数据库,django,sqlite
接下来在文件 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后,数据库表的记录如下:
使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构,Django,数据库,django,sqlite
从上面的数据库表记录的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...')

然后运行,运行结果如下:
使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构,Django,数据库,django,sqlite文章来源地址https://www.toymoban.com/news/detail-576269.html

到了这里,关于使用Django数据库模型中的ForeignKey()形成数据表记录的父子层次结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django中数据库模型中的DecimalField字段和IntegerField字段有何区别?

    在Django的数据库模型中, DecimalField 和 IntegerField 是两种不同的字段类型,用于存储数字数据。它们的主要区别在于支持的数据范围和精度。 IntegerField 是用于存储整数值的字段类型。它可以存储包含正数、负数和零在内的整数值。 IntegerField 的取值范围是由所使用的数据库系

    2024年02月16日
    浏览(22)
  • Django创建应用、ORM的进阶使用及模型类数据库迁移

    Django 项目就是基于 Django 框架开发的 Web 应用,它包含了一组配置和多个应用,我们把应用称之为 App,在前文中对它也做了相应的介绍,比如 auth、admin,它们都属于 APP。 一个 App 就是一个 Python 包,通常一个 App 可以包含模型、视图、模板和 URL 配置文件,可以被应用到多个

    2024年02月09日
    浏览(39)
  • Django Web开发(day4)——数据模型使用与填充网站数据(对数据库的基本操作)

    本博客将会涉及:  Django 数据模型的使用 视频数据的导入 admin 后台的使用  1、Django 数据模型的使用  在上一篇中完成了网站的数据模型的创建,在数据模型创建之后, Django 会为我们的数据模型创建一套数据库抽象的 API 接口,以供我们进行检索数据、创建数据、更新和修

    2024年01月18日
    浏览(43)
  • 7. Django 模型与数据库

    7.1.1 定义模型 7.1.2 开发个人的ORM框架 7.1.3 数据迁移 7.1.4 数据导入与导出 7.2.1 一对一表关系 学生id(主键) 姓名 班级 教室 1001 张三 三年级一班 301 1002 李四 三年级二班 302 1003 王五 三年级三班 303 学生信息id(主键) 年龄 联系电话 外键 1001 301 0000-120 1001 1002 302 0000-121 1002 1003 303

    2024年04月23日
    浏览(25)
  • Django模型将模型注释同步到数据库

    1、安装django-comment-migrate库 2、将库注册到settings.py文件中 3、加注释 3.1、给模型(表)加注释 在模型的class Meta中编辑 verbose_name,如: 3.2、给表字段加注释 设置模型字段 verbose_name字段选项,如 4、执行生成数据库迁移文件 5、执行数据库迁移 6、执行数据库注释迁移 7、查看

    2024年02月15日
    浏览(26)
  • Django如何删除数据库表中的数据【不断积累】

    这篇博客积累Django的数据库常用删除方法。 假设有表模型Author定义如下: Django 默认为每个模型添加一个名为 id 的自增主键列,用于唯一标识每条记录。因此,可以使用该 id 值来删除指定的记录。 下面是使用 id 值删除记录的示例代码: 在这个示例中,我们首先指定要删除

    2024年02月13日
    浏览(40)
  • Django中级指南:理解并实现Django的模型和数据库迁移

    Django 是一个极其强大的 Python Web 框架,它提供了许多工具和特性,能够帮助我们更快速、更便捷地构建 Web 应用。在本文中,我们将会关注 Django 中的模型(Models)和数据库迁移(Database Migrations)这两个核心概念。 在 Django 中,模型是一种特殊的对象,它对应数据库中的一张

    2024年02月13日
    浏览(29)
  • django对数据库中的表进行重新生成

    删除数据库中的表 删除项目中migrations包下的初始化文件 进入到manage.py目录下执行命令 python manage.py makemigrations 执行完上述命令之后,再执行命令 python manage.py migrate 就可以啦 最后执行 python manage.py runserver 运行我们的Django项目 关于详细的数据表生成见博文:https://blog.csdn.n

    2024年02月16日
    浏览(34)
  • 问题解决:django模型查询报错,找不到数据库表

    django项目,使用的postgresql数据库,建了多个模式,模型查询时一直默认查public的表 1. 问题 :   django.db.utils.ProgrammingError: relation \\\"ip_management_app.table\\\" does not exist 2. 代码: 3. 解决方案 (1)使用的django2.0,settings文件中修改数据库配置,增加OPTIONS (2)其他方案 修改db_table,有

    2024年01月23日
    浏览(36)
  • Django的数据库操作中的F对象是什么东西?

    在Django中, F 对象是一个用于表示数据库字段的值的特殊对象。 它允许你在数据库层面进行原子操作,而不需要先将数据从数据库中检索到Python层再进行操作。 F 对象的使用通常涉及到数据库更新,特别是在处理并发操作时。 以下是 F 对象的主要特性和用法: 原子操作:

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包