Django tastypie:资源在详细请求中显示与列表请求中不同

2024-06-09

我刚刚开始使用 django tastypie,我对它很热情。 我的问题:我正在寻找与管理视图中相同的功能: 指定外键字段在其他对象的列表响应中看到的内容以及在详细响应中看到的内容。

假设这是我的简单模型:

class Location(models.Model):
    name = models.CharField(max_length=256, blank=True)
    longitude = models.FloatField(blank=True, default=0.0)
    latitude = models.FloatField(blank=True, default=0.0)
    description = models.CharField(max_length=256, blank=True)
    shortname = models.CharField(max_length=256, blank=True)
    tooltiptext = models.CharField(max_length=1000, blank=True)
    locationtype = models.ForeignKey(LocationType, blank=True, null=True)
    public_anonymous = models.BooleanField(default=False, blank=False, null=False)
    public_authorized = models.BooleanField(default=False, blank=False, null=False)
    def __str__(self):
        return '%s' % (self.name)

class Variable(models.Model):
    abbreviation = models.CharField(max_length=64, unique=True)    
    name = models.CharField(max_length=256, blank=True)
    unit = models.CharField(max_length=64, blank=True)
    def __str__(self):
        return '%s  [%s]' % (self.name, self.unit)

class Timeseries(models.Model):
    locationkey = models.ForeignKey(Location)
    variablekey = models.ForeignKey(Variable)
    tstypekey = models.ForeignKey(TimeseriesType)

    def __str__(self):
        return '%s: %s (%s)' % (self.locationkey.name, self.variablekey.name, self.tstypekey.name)

这些是我的 api 资源:

class LocationResource(ModelResource):
    class Meta:
        queryset = Location.objects.all()
        resource_name = 'location'
        excludes = ['public_anonymous', 'public_authorized']
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

class VariableResource(ModelResource):
    class Meta:
        queryset = Variable.objects.all()
        resource_name = 'variable'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

class TimeseriesTypeResource(ModelResource):
    class Meta:
        queryset = TimeseriesType.objects.all()
        resource_name = 'timeseriestype'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

class TimeseriesResource(ModelResource):
    location = fields.ForeignKey(LocationResource, 'locationkey', full=False) 
    variable = fields.ForeignKey(VariableResource, 'variablekey', full=False) 
    timeseriestype = fields.ForeignKey(TimeseriesTypeResource, 'tstypekey', full=False) 

    class Meta:
        queryset = Timeseries.objects.all()
        resource_name = 'timeseries'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

在 TimeseriesResource 中,如果您使用full=False,如果你使用的话,你只会得到一个带有 id 的 urlfull=True你得到了所有的信息。实际上,该位置有更多信息。 我只需要比 full='False' 更多的信息,但不是所有信息都使用full=True。 我不想使用排除选项,因为我没有详细信息或位置对象本身的列表中的信息。

我正在考虑的选项之一是为同一个对象创建 2 个资源,但这感觉不是最好的解决方案(但我想它会起作用)。 顺便说一句:我考虑过这个选项,当然行不通,最好使用 bmihelac 的答案中使用的解决方法(谢谢)。

虽然... 尝试解决方法... 让我想到一个新问题,请参阅:

django-tastypie:无法访问脱水中的bundle.request(self,bundle) https://stackoverflow.com/questions/8263331/


有一个针对不同领域的功能请求show and index,并讨论了如何实施:

https://github.com/toastdriven/django-tastypie/issues/18 https://github.com/toastdriven/django-tastypie/issues/18

在不包含此功能之前,也许您可​​以帮助解决此问题:

https://github.com/toastdriven/django-tastypie/issues/18#issuecomment-2695447 https://github.com/toastdriven/django-tastypie/issues/18#issuecomment-2695447

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

Django tastypie:资源在详细请求中显示与列表请求中不同 的相关文章

随机推荐

  • data.table `:=` 具有动态输入(现有列)和输出(新列名称)的赋值表达式

    Note 我在这个问题中遇到的确切问题不适用于最新版本的数据表 如果您想做标题中描述的事情 请查看软件包常见问题解答中的相应问题 1 6 好的 但我事先不知道表达方式 我如何以编程方式传递它们 https rawgit com wiki R
  • 尝试在 Keras 中创建 BLSTM 网络时出现类型错误

    我对 Keras 和深度学习有点陌生 我目前正在尝试复制这个paper https pdfs semanticscholar org 4afe f0c6039a5d8b647518b6fe05f47a8bd3aeee pdf但是当我编译第二
  • 占位符更改时在 Internet Explorer 上触发输入事件

    正如这个所示jsfiddle 示例 http jsfiddle net wWbE7 5 当我更改占位符时 它会触发输入事件 我在 I E 11 版本上测试了它 但我猜旧版本也有同样的问题 其他浏览器的行为并非如此 这是 I E 错误吗 如果
  • 从 NSString 中删除字符?

    NSString myString A B C D E F G 我想删除空格 因此新字符串将是 ABCDEFG 你可以使用 NSString stringWithoutSpaces myString stringByReplacingOcc
  • 动态设置的 CSS 样式被覆盖

    我有几个
  • doPostback 在 IE 11+ Windows 8.1 中失败

    我在 Windows 8 1 预览版的 IE 11 中收到空白页面 检查页面后 我认为以下代码可能是罪魁祸首 因为在这些行之后没有进一步的行显示调试器窗口 因此代码在该行之后中断 IE 11
  • 匹配器列表参数在 zsh zstyle 补全中如何工作?

    我正在尝试配置我的 zshrc 以便文件 目录上的代码完成可以根据需要工作 我在网上找到了有关 zstyle 完成语法和代码示例的各种资源 但其中的某些部分对我来说仍然是黑魔法 到目前为止 经过一些摆弄和测试 这就是我所在的位置 zstyl
  • 如何在 Dart 中动态地将文件输入添加到 FormData?

    我正在尝试使用 FormData 类通过 HttpRequest send 将数据发送到我的服务器 我需要使用多个字段执行 POST 请求 它的工作原理应该与以下 Javascript 代码相同 Upload File var upload
  • 改进 JUNG 图的渲染

    我正在使用 jung 来直观地显示大型数据集 数千个节点 但是当我放大或缩小或移动节点时 系统会变得非常滞后 有没有办法改善 JUNG 中图形的渲染 我用来改进图形渲染的方法是过滤图形的边缘 每次您尝试移动图形时 框架都会进行大量计算来重新
  • 数据表在 bootstrap3 模式对话框上没有响应

    我正在为我的表使用数据表插件 请注意 我正在使用响应式数据表 我也在使用 bootstrap v3 2 0 我已将响应式数据表放在引导模式对话框中 但我面临的问题是 我的表格在模式对话框上没有响应 但在正常页面上变得响应 我发现如果我从模态
  • Android - 更改 Android 操作栏的位置

    我正在尝试建立一个像 Facebook 和 Path 应用程序一样滑出菜单 我想在操作栏的右端放置一个按钮 该按钮将触发打开和关闭菜单 当菜单滑入以使其可见时 我想将主视图与操作栏一起向左滑出 其他一切都很好 我正在使用以下位置提供的开源代
  • 将二进制解码为pdf

    我正在使用一个平台 当您将 pdf 上传到该平台时 它会使用 Python 中的 base64 编码转换 pdf 然后它将二进制字符串存储在数据库中 现在我想解码字符串并将它们写入本地文件夹 所以我想使用 with open 结构并向其传递
  • 手动重播由 workbox-background-sync 排队的请求

    我正在我的 PWA 应用程序中提供离线支持 我在用workbox https developers google com web tools workbox modules workbox sw为了那个原因 这是我当前的代码 const a
  • for 循环内的 Promise

    我正在为此苦苦挣扎 点击按钮获取一组数据 检查返回的行数是否符合我的预期 我需要运行 10 次 每次我期望不同的行数 下面的代码片段不起作用 因为 i 不是我所期望的 我怎样才能做到这一点 for var i 0 i lt subEleme
  • Web.Config 文件中的多行文本

    我需要在网页上显示欢迎消息 我希望将消息文本保存在 Web Config 文件中 文本将包含换行符 e g
  • Unraveling Angular 2 书,第 1 章,示例 5

    该页面显示了潜水列表 它有一个 添加新潜水 清除潜水 和一个搜索框 该搜索框会在您输入内容时过滤显示的列表 这是模板 div class container fluid h1 My Latest Dives Angular TypeScri
  • 我可以在 SQL 查询中使用什么来帮助我确定查询未返回任何数据结果的原因

    有人可以帮助我对 SQL 查询进行故障排除 以找出为什么它不返回任何结果 只返回列别名吗 我已将其分解 并且明显组合在一起的所有部分均单独返回预期数据 感谢您提前提供的任何指导 帮助 下面是我的脚本 DECLARE u cnt INT DE
  • 基于公共列合并数据帧,但保留 x 中的所有行[重复]

    这个问题在这里已经有答案了 我需要合并两个数据框x and y其中有大约 50 列公共列和一些独特列 我需要保留所有行x 如果我运行它会起作用 NewDataframe lt merge x y by c ColumnA ColumnB C
  • 如何在 SQL 中将整数列值加 1

    我的问题是 如何将列的值加 1 例如 假设有一列ID值为 1 2 3 4 现在当我更新这张表时ID列应增加 1 Now ID将变成 2 3 4 5 为表中的每个值加一 UPDATE myTable SET ID ID 1 要创建一个新值 比
  • Django tastypie:资源在详细请求中显示与列表请求中不同

    我刚刚开始使用 django tastypie 我对它很热情 我的问题 我正在寻找与管理视图中相同的功能 指定外键字段在其他对象的列表响应中看到的内容以及在详细响应中看到的内容 假设这是我的简单模型 class Location model