Bor*_*jaX 1 python formatting tastypie
我开始将Tastypie添加到我正在开发的一个非常小的Django应用程序中,我想知道是否有一种方法只发送一个关系所指向的资源的数字id,而不是资源所在的uri.
例如,使用文档中提供的示例之一:
暴露的"Entry"资源如下所示:
{
"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/"
}
Run Code Online (Sandbox Code Playgroud)
它与"用户"的关系显示为 "user": "/api/v1/user/1/".有没有任何方法可以制作它"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
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这个想法或者保持resource_uri属性是完整的,但是当涉及到建模Sql关系时,我宁愿只有id(或者数字id的列表,如果关系是" ToMany ").dehydrate_user为EntryResource类添加方法是否是个好主意?它似乎工作,但也许有一种更通用的方式(避免必须dehydrate为每个关系编写一个方法)
先感谢您
小智 6
您可以尝试使用水合物脱水循环
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
Run Code Online (Sandbox Code Playgroud)
但我强烈建议坚持使用URI,因为它是你直接寻址资源的方式.水合物和脱水用于更复杂或虚拟的资源.