gpt4 book ai didi

python - Tastypie:不要发送资源的整个 uri(只是 id)

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:38 25 4
gpt4 key购买 nike

我开始将 Tastypie 添加到我正在开发的一个非常小的 Django 应用程序中,我想知道是否有一种方法可以只发送关系指向的资源的数字 ID,而不是发送资源驻留。

例如,使用 documentation 中提供的示例之一:

公开的“入口”资源如下所示:

{
"body": "Welcome to my blog!",
"id": "1",
"pub_date": "2011-05-20T00:46:38",
"resource_uri": "/api/v1/entry/1/",
"slug": "first-post",
"title": "First Post",
"user": "/api/v1/user/1/"
}

它与显示为 "user": "/api/v1/user/1/" 的“user”有关系。有什么方法可以让它变成 "user": 1(如果可能的话,是整数)所以它看起来像下面这样?

{
"body": "Welcome to my blog!",
"id": "1",
"pub_date": "2011-05-20T00:46:38",
"resource_uri": "/api/v1/entry/1/",
"slug": "first-post",
"title": "First Post",
"user": 1
}

我喜欢将 resource_uri 属性作为一个整体保留的想法,但是当谈到建模 Sql 关系时,我宁愿只有 id(或数字 id 列表,如果关系是“ToMany”)。将 dehydrate_user 方法添加到 EntryResource 类来执行此操作是否是个好主意?它似乎可行,但也许有更通用的方法(以避免为每个关系编写 dehydrate 方法)

提前致谢

最佳答案

您可以尝试使用水合物脱水循环

def dehydrate(self, bundle):
bundle.data['entry'] = bundle.obj.entry.id
return bundle

def hydrate(self, bundle):
bundle.data['entry'] = Entry.objects.get(id=bundle.data['entry'])
return bundle

但我强烈建议坚持使用 URI,因为这是您可以直接寻址资源的方式。 Hydrate 和 dehydrate 用于更复杂或虚拟的资源。

关于python - Tastypie:不要发送资源的整个 uri(只是 id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com