我开始将 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 用于更复杂或虚拟的资源。
