在 Django Tastypie API 中包含子资源

2023-11-21

我正在规划一个使用 Django 和 Tastypie 实现 REST API 的网站,并且 我很难找到“正确”的包含方式 返回的资源中的子资源。

作为沙箱,我制作了一个带有 Ticket 模型和 TicketComment 的小应用程序 模型,其中评论属于票证。我看了《Tastypie 食谱》 嵌套资源的配方(http://django-tastypie.readthedocs.org/en/latest/cookbook.html#nested-resources), 但我很难理解为什么我应该这样做。下面的代码 使用 django.forms.models.model_to_dict() 将评论放入票证中, 但我想这里一定有什么“陷阱”。

我有什么理由不应该做我现在正在做的事情吗?还有,有没有一个 比食谱中列出的更干净的感觉模式?

型号如下:

# tickets/models.py

from django.db import models

class Ticket(models.Model):
    title = models.CharField(max_length=200)
    create_ts = models.DateTimeField(auto_now_add=True)
    submitter_email = models.EmailField()
    PRIORITY_CHOICES = (
        ('H', 'High'),
        ('M', 'Medium'),
        ('L', 'Low'),)
    priority = models.CharField(max_length=1, choices=PRIORITY_CHOICES)
    description = models.TextField()
    STATUS_CHOICES = (
        ('NEW', 'New & Unclaimed'),
        ('WIP', 'Work In Progress'),
        ('RES', 'Resolved'),
        ('CLS', 'Closed'),)
    status = models.CharField(max_length=3, choices=STATUS_CHOICES)

    def __unicode__(self):
        return "<Ticket:%d:%s>" % (self.id, self.title,)

class TicketComment(models.Model):
    ticket = models.ForeignKey(Ticket)
    comment_ts = models.DateTimeField(auto_now_add=True)
    commenter_email = models.EmailField()
    comment = models.TextField()

    def __unicode__(self):
        return "<TicketComment:%d:%d>" % (self.ticket.id, self.id,)

资源如下:

# tickets/api.py

from tastypie import fields
from tastypie.resources import ModelResource
from tickets.models import Ticket, TicketComment
from django.forms.models import model_to_dict

class TicketResource(ModelResource):

    class Meta:
        queryset = Ticket.objects.all()
        resource_name = 'ticket'

    def dehydrate(self, bundle):
        comments = TicketComment.objects.filter(ticket=bundle.data['id'])
        bundle.data['comments'] = [model_to_dict(c) for c in comments]
        return bundle

class TicketCommentResource(ModelResource):
    ticket = fields.ForeignKey(TicketResource, 'ticket')

    class Meta:
        queryset = TicketComment.objects.all()
        resource_name = 'comment'

输出如下:

{
   comments: [
        {
            comment: "This is the first comment.",
            commenter_email: "[email protected]",
            id: 1,
            ticket: 1
        },
        {
            comment: "This is the second comment.",
            commenter_email: "[email protected]",
            id: 2,
            ticket: 1
        }
    ],
    create_ts: "2011-10-17T15:55:11.372000",
    description: "This is the first ticket.",
    id: "1",
    priority: "M",
    resource_uri: "/api/v1/ticket/1/",
    status: "NEW",
    submitter_email: "[email protected]",
    title: "First Ticket"
}

您正在寻找相关领域:http://django-tastypie.readthedocs.org/en/latest/fields.html#relationship-fields

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

在 Django Tastypie API 中包含子资源 的相关文章

  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • WCF、REST、SSL、客户端、自定义证书验证

    我有一个无法解决的具体问题 让我详细解释一下 我是这项技术的新手 所以我可能使用了一些错误的术语 如有不明白之处 请指正并解释或要求解释 我正在创建一个自托管的 WCF REST 服务器 托管在 WPF 应用程序中 它使用 https SL
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • Python Fabric - 未找到主机。请指定用于连接的(单个)主机字符串:

    如何获取 找不到主机 请指定用于连接的 单个 主机字符串 面料如何解决 def bootstrap host ec2 54 xxx xxx xxx compute 1 amazonaws com env hosts host env use
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • 为什么我无法在 Mac OS X Terminal.app 上的 Python 解释器中显示 unicode 字符?

    如果我尝试粘贴 unicode 字符 例如中间的点 在我的 python 解释器中它什么也不做 我在 Mac OS X 上使用 Terminal app 当我只是在 bash 中时 我没有遇到任何问题 但在解释器中 python Pytho
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • 如何通过 Apps Script & Drive SDK 创建新的脚本文件

    尝试通过在 Apps 脚本中调用 Drive SDK 来创建包含文件的新项目 下面的内容到底会放在哪里UrlFetchApp要求 files id 9basdfbd 749a 4as9b b9d1 d64basdf803 name Code
  • 对数据帧的每 2 小时数据进行 Groupby

    我有一个数据框 Time T201FN1ST2010 T201FN1VT2010 1791 2017 12 26 00 00 00 854 69 0 87 1792 2017 12 26 00 20 00 855 76 0 87 1793
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 没有 Neo4Django 的 Django 和 Neo4j

    我正在使用 Neo4j 以及 Postgres 构建一个 Django 应用程序 我发现这个 Django 集成称为新4django https github com scholrly neo4django 我想知道是否可以只使用neo4r

随机推荐

  • javascript html select动态添加optgroup和选项

    假设我有一个
  • 如何使用 SQL Server (Server Management Studio) 存储和检索图像

    我在尝试将文件插入 SQL Server 数据库时遇到困难 我会尽力将其分解 我应该使用什么数据类型来存储图像文件 jpeg png gif 等 现在我的桌子正在使用image数据类型 但我很好奇是否varbinary将是一个更好的选择 我
  • 使用python提取文本文件中两个字符串之间的值

    假设我有一个包含以下内容的文本文件 fdsjhgjhg fdshkjhk Start Good Morning Hello World End dashjkhjk dsfjkhk 现在我需要编写一个 Python 代码 它将读取文本文件并将
  • MySQL查询共同好友[重复]

    这个问题在这里已经有答案了 可能的重复 MYSQL选择共同好友 我有一张友谊表 友谊仅存储在一行中 所以不存在重复的条目 id Person1 Person2 status 1 1 2 friend 2 1 3 friend 3 2 3 f
  • 在python中读取外部sql脚本

    我正在学习如何在 python 中执行 SQL 我知道 SQL 而不是 Python 我有一个外部 sql 文件 它创建数据并将其插入到三个表 Zookeeper Handles Animal 中 然后我有一系列查询来运行表 以下查询位于我
  • R Shiny REST API 通信

    我有一个闪亮的应用程序 它接受 JSON 输入文件 通过分类器运行它并返回分类的 JSON 对象 我希望应用程序能够与 API 进行通信 我希望 API 将文件发布到 Shiny 应用程序 该应用程序将完成其工作并返回分类对象 基本上 我希
  • 如何编写同时适用于 Python 2 和 Python 3 的代码?

    我维护的 Django 网站当前使用 Python 2 7 但我知道几个月后我必须将其升级到 Python 3 如果我现在正在编写必须在 Python 2 中运行的代码 是否有一个Pythonic如果我知道 Python 3 中的语法是什么
  • Laravel 4 + Zurb Foundation 5 的最佳实践?

    TL DR 将 Laravel 4 Zurb Foundation 5 组合 带 Compass 的文件 包管理器和构建工具安排为具有干净公共 静态 部分的一致存储库的最佳方式是什么 我想开始一个新项目 后端基于最新的 Laravel 前端
  • OpenID 端点

    我希望允许用户使用 OpenID 登录我的网站 到目前为止我已经整合了谷歌和雅虎 还有哪些其他流行服务提供 OpenID 登录端点 我对 Windows Live 特别感兴趣 但据我所知 他们最近关闭了端点 我找不到任何有关新端点的信息 F
  • Haskell 中“Except”的复杂性有何用途?

    I 理解 我认为 两者之间有密切的关系Either and Except在 Haskell 中 并且很容易从一种转换为另一种 但我对 Haskell 中处理错误的最佳实践以及在什么情况和场景下我会选择其中之一感到有点困惑 例如 在examp
  • “原子”和非原子有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 原子属性与非原子属性 我只是想知道这两行代码有什么区别 property nonatomic retain NSString str and property atomic retain NSStri
  • 同时多个 wget -r 一个站点?

    任何带有选项的命令 wget 对于多线程递归地同时下载站点 我找到了一个不错的解决方案 阅读原文位于http www linuxquestions org questions linux networking 3 wget multi th
  • 返回 this 方法的嵌套 LINQ 无法转换为存储表达式异常

    以下 LINQ retval from jm in entities JobMasters where jm UserId userId jm IsRemote false select new JobDto JobMasterId jm
  • 如何更改 Flutter 网页字体?

    我正在尝试更改 Flutter for Web 应用程序中标题的字体 我该怎么做 我发现 pubsec yaml 与移动版本完全不同 这里是文件 name projectbaseclient description An app built
  • Safari 和 Mobile Safari 中的内联 SVG 中断

    我最近推出了一个使用了一些内联 SVG 的网站
  • VBA 监视新文件的文件夹

    所以我正在尝试编写一个 VBA 程序来监视文件夹中的新文件 然后对它们进行处理 我发现了一些有关使用 WMI api 的有希望的示例 在 VBA 中接收文件创建通知 无需轮询 http www mrexcel com forum excel
  • 如何查找并删除文本文件中的表情符号?

    我试图从我主要使用 sed 和一些 perl 命令解析的文本文件中删除所有表情符号 并且最好将它们存储在单独的文件中 但这不是必需的 我可以使用 bash 或 perl 轻松完成此操作吗 或者我应该使用另一种语言 EDIT 感谢赛勒斯和巴尔
  • xamarin.form 中的弹出消息框

    我想做的与 DisplayAlert 类似 弹出一个显示页面 其中包含图像 内容和右上角的小关闭按钮 显示页面不应覆盖整个手机 但大约 80 的手机 UI 背景仍作为父页面 我正在尝试使用 PushModalAsync 和 PopModal
  • 如何调整动态加载的本机 dll 的 %PATH%?

    我正在动态加载一个 NET 程序集 该程序集依赖于多个native dll 位于各个文件夹中 但只有当我的应用程序启动时这些 DLL 的文件夹位于 PATH 环境变量中时 Windows 才会找到这些 DLL 我想从程序中修改 PATH 变
  • 在 Django Tastypie API 中包含子资源

    我正在规划一个使用 Django 和 Tastypie 实现 REST API 的网站 并且 我很难找到 正确 的包含方式 返回的资源中的子资源 作为沙箱 我制作了一个带有 Ticket 模型和 TicketComment 的小应用程序 模