在 Django 中序列化一棵树

2023-11-30

有没有简单的方法来序列化由模型给出的树,例如下面所示的类别?

我想得到一个 json 对象,例如:

[ { 'name': 'cat1',
    'children': [ { 'name': 'cat11',
                    'children': [ ... ]
                ]
  }
  ...
]

Thanks

class Category(MPTTModel):
    name = models.CharField(max_length=50, unique=True)
    parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
    order_key = models.IntegerField()

    class Meta:
        verbose_name_plural = 'Categories'

    class MPTTMeta:
        order_insertion_by = ['order_key']

    def __unicode__(self):
        return "%s" %(self.name)

我认为您必须遍历树,并构建一个使用 JSON 序列化的对象。我假设你的树是非循环的,因为否则它会变得更加复杂。我还没有测试过这个,但是这样的东西会起作用(只要你确定你没有循环):

def serialize_to_json(self):
    return json.dumps(self.serializable_object())

def serializable_object(self):
    "Recurse into tree to build a serializable object"
    obj = {'name': self.name, 'children': []}
    for child in self.get_children():
        obj['children'].append(child.serializable_object())
    return obj

(不记得是否children_set是获取孩子名单的正确方法。如有错误请评论。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django 中序列化一棵树 的相关文章

  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 如何在views.py中检查用户的权限?

    在我的 Django 站点上的views py 文件中 我有一个基于类的视图 需要根据用户的权限更改变量 所以如果用户有pro view许可 然后它看到一件事 否则如果有basic view然后它看到另一个 我怎样才能在我的内部访问它get
  • 将模型中没有的字段添加到 Django ModelForm

    我有一个看起来像这样的模型 class MySchedule models Model start datetime models DateTimeField name models CharField Name max length 75
  • django ImportError:无法导入名称 list_route

    我尝试通过用 list route 标记来添加新端点 但是当我尝试导入 if 时 from rest framework decorators import list route 它找不到它 我需要安装一些东西才能工作吗 我是 django
  • Django模型表单同时保存两次post请求

    I am using django bootstrap modal forms 1 3 1 following https pypi org project django bootstrap modal forms but if I run
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 在模板中添加浮点数(django)

    也许我遗漏了一些东西 但我想添加一个浮点数 如下所示 floatnumber add 3 4 过滤器添加我的结果 所以我不想写我的过滤器 但如果这是唯一的方法 我将复制添加过滤器 现在我正在这样做 def addf value arg Ad
  • 序列化包含 BitmapImage 的对象

    这是关于该主题的进一步问题 如何使用反序列化对象 https stackoverflow com questions 18444861 how to use deserialized object 18455591 18455591我的班级
  • 无法覆盖 save_model django admin?

    我不明白我做错了什么 我希望用户只添加公告模型的标题和描述 其余部分应自动填充 这是我的模型 class Annoucement models Model username models ForeignKey User on delete
  • 如何在 PHP 中反序列化 Perl Data::Dumper 输出

    我在 Perl 中有一个导出变量的结果 如下字符串 VAR1 guard gt undef work hand gt undef images gt 1 gt mini height gt 150 width gt 150 extensio
  • 用于嵌入式系统的简约人类可读序列化格式解析器

    By 人类可读的序列化格式 I mean YAML JSON INI或喜欢 请注意 XML对于我的目的来说太冗长而且太不方便 所以让我们把它作为最后的手段 格式应将数据存储为 命名键 值 配对并允许嵌套和数组 不过 缺少数组并不重要 此外
  • 将 Django Model 对象转换为 dict,所有字段都完好无损

    如何将 django Model 对象转换为 dictall它的领域 理想情况下 所有内容都包含外键和 editable False 的字段 让我详细说明一下 假设我有一个如下所示的 django 模型 from django db imp
  • 表单输入框不显示

    我正在尝试使用 Django 显示一个简单的表单输入文本框 我正在亚马逊 AWS 上部署 该网站在不同的服务器 pythonanywhere 上运行良好 但在 AWS 上存在主要问题 具体来说 输入框没有被显示 我使用的模板如下 首页 ht
  • 在子类 unique_together 元选项中使用基类字段时出错

    使用以下代码 class Organization models Model name models CharField max length 100 alias models SlugField class Division Organi
  • 将属性反序列化到预先存在的对象中

    是否可以使用任何标准序列化程序来反序列化对象属性 而无需创建新对象 问题是 所讨论的对象非常复杂 它们只能由特殊工厂创建 并且它们的类型是在运行时动态生成的 但它们有一些已知的属性 我想将它们存储在外部文件 最好是 xml 但二进制也可以
  • 数据未保存为加密数据 django

    到目前为止 我尝试了超过 6 个插件 但现在很沮丧 现在用的是这个密码学 https pypi org project django cryptography 一切都很好并相应地完成 但是当我像这样在模型管理器中保存数据时 def crea
  • 使用 django-social-auth 登录后获取 Facebook 数据

    我们已经建立了一个应用程序 使用django social auth使用 Facebook 验证用户身份的扩展 身份验证工作正常 但我们不清楚如何从 Facebook 获取有用信息 好友列表 点赞等 看起来django facebook处理
  • 哪些应用程序使用 R 树?

    除了 GIS 应用程序之外 还有哪些其他应用程序或库使用 R 树及其变体 电脑游戏经常如此 这是一个很酷的链接 http en wikipedia org wiki MegaTexture Future Technology Evoluti
  • 如何在Django中获取某个组的所有用户?

    我想获取 Django 组中所有用户的列表 例如 User objects filter group Staff 我在文档中的任何地方都找不到如何执行此查询 以下查询解决了我的问题 User objects filter groups na
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • 导出的 JAR 无法读取图像 [重复]

    这个问题在这里已经有答案了 我正在尝试让图像显示在 JPanel 中 这是我正在使用的代码 URL imageURL BufferedImage image null ImageIcon icon imageURL getClass get
  • 使用 PDO 在 postgres 中自动回滚

    我发现postgres PDO自动回滚当抛出异常时 先前的更改 即使异常被捕获并吞下 示例 伪代码 transaction gt begin try manager gt insert INSERT try manager gt exec
  • Pandas - DataFrame 聚合行为异常

    相关Dataframe聚合方法传递列表问题 and Pandas 无法使用聚合函数列表进行聚合 考虑这个数据框 import pandas as pd import numpy as np df pd DataFrame index ran
  • 如何使用 dill 库通过 shelve 库进行对象序列化

    我在用着PyMemoize缓存协程的库 我装饰了协程 但是当 Python 调用它时 我得到 TypeError can t pickle coroutine objects 发生这种情况是因为PyMemoize内部尝试腌制协程并将其存储在
  • 手动签署 AppSync URL 以在 Lambda 中使用会出现错误的签名错误

    在 Lambda 中 我想签署我的AppSync端点与aws signature v4以便将其用于突变 生成的 URL 似乎没问题 但当我尝试它时 它给了我以下错误 errors errorType InvalidSignatureExce
  • 如何使用 nextjs 处理获取 URL

    因此 我尝试将 nextjs 应用程序部署到 vercel 但它在代码的索引获取 URL 部分始终失败 在我的index js页面目录的文件我有以下代码 export async function getStaticProps const
  • Zend Framework:无法确定临时目录,请手动指定cache_dir

    我刚刚学习 Zend 框架 我创建了一个简单的 Zend Form 当我提交表单时 出现以下错误 An error occurred Application error Exception information Message Could
  • Xcode 4.2 中的 Guard Malloc。它在哪里?

    它在哪里 Xcode 中还有其他可用的工具吗 谢谢 现在 NDA 不再适用于 xcode 4 2 以下是包含所需步骤的屏幕截图 对于仍在寻找 Guard Malloc 的人来说 这应该会更快
  • 如何将各种类型的函数指针存储在一起?

    普通指针可以使用通用存储void e g void arr 10 arr 0 pChar arr 1 pINt arr 2 pA 不久前 我看到一个讨论 void 可能无法在所有平台 例如 64 位及更多 中存储函数指针而不丢失数据 但我不
  • 使用java插入二叉树不起作用

    我目前正在使用java学习树 我这里发生了一些错误 在二叉树中插入项目 我不明白为什么它不起作用 这是代码 树节点 public class TNode int data TNode left TNode right public TNod
  • 更新 AppWidget 上的 TextView 文本大小

    我无法弄清楚这一点 我已经为此苦苦挣扎了好几天 我已经厌倦了 我正在使用配置活动中的 Spinner 更改 AppWidget 上 TextView 的文本大小 但无法正确更新 我告诉它第一次时它不会更新 但第二次和第三次以及之后的每次都会
  • 如何测试网页是否包含某些文本

    我正在尝试检测网页是否包含某些文本 例如 我想看看是否这个网页包括以下短语 这是我的代码 我无法发现 如果那么 条件得到满足 这就是我正在尝试的 Const READYSTATE COMPLETE 4 Declare Function Se
  • 列表视图在视图翻转器内滑动

    我试图在列表视图上左右滑动并切换视图翻转器 就像 remeberthemilk 应用程序以及 Nexus One 上的默认新闻和天气应用程序一样 滑动浏览新闻主题 使用我找到的各种教程 我在 stackoverflow 上发现了一个展示如何
  • 无法通过c#删除.exe文件

    我在 Windows 窗体应用程序中有一个更新按钮 当用户单击更新按钮时 应用程序会检查应用程序的当前版本与从 Web 服务获取的服务器中的可用版本 如果版本不匹配 应用程序将从Web服务获取的路径下载新版本 我目前在同一解决方案中使用两个
  • 运行jsp文件时出现错误

    我在 eclipse juno 中创建了一个简单的 Hello jsp 程序 当我尝试通过在服务器上运行来运行此 jsp 文件时 出现以下错误 出现问题 在本地主机上发布到 Tomcat v6 0 服务器 遇到了问题 发布失败并出现多个错误
  • 使用 pandas python 的 SuperTrend 代码

    我正在尝试使用 pandas 在 python 中为 SuperTrend 指标编写以下算法 BASIC UPPERBAND HIGH LOW 2 Multiplier ATR BASIC LOWERBAND HIGH LOW 2 Mult
  • 尝试将内联 UIDatePicker 添加到 UITableViewCell

    我正在尝试在 TableView 单元格内创建一个内联 DatePicker 类似于this and this所以线程 我使用下面的方法创建日期选择器 该方法在加载视图时调用 void createDatePicker datePicker
  • 在 sql 查询中使用数组/变量

    我确信有办法做到这一点 但我不知道了 我有一张包含所有数据的大表 In the table I包含以下信息的行 columnA1 groupName columnA2 groupID ColumnB3 name columnB4 group
  • Tomcat 8 中的 SSL:服务器和客户端 JKS + 客户端公共 cer

    我按照本指南使用 SSL 层设置 Tomcat 8 实例 生成客户端和服务器密钥库以及自动签名的公共客户端证书 我想问题是我真的不知道如何配置 Tomcat 的连接器 这是我当前的 server xml 文件 删除了不必要的注释
  • 在 Django 中序列化一棵树

    有没有简单的方法来序列化由模型给出的树 例如下面所示的类别 我想得到一个 json 对象 例如 name cat1 children name cat11 children Thanks class Category MPTTModel n