我有一个mongodb文档'Post',它有EmbeddedListField
个'评论'。我正在使用tastypie来构建API层,我希望只有在请求单个帖子时才会将注释与其正文字段一起列出。当请求帖子列表时,我不想显示完整的评论正文,因为这会破坏我的应用程序的性能。这就是我在资源文件中的内容:
comments = tastypie_mongoengine_fields.EmbeddedListField(of='api_core.resources.EmbeddedCommentResource', attribute='comments', full=True, null=True)
我该怎么办?我不想为'post_entry'和'post_list'创建两个入口点,因为这对API的消费者来说是不好的设计。
答案 0 :(得分:0)
我在脱水方法中做了一个简单的检查:
def dehydrate(self, bundle):
if self.get_resource_uri(bundle) != bundle.request.path:
bundle.data['comments_count'] = len(bundle.data['comments'])
del bundle.data['comments']
bundle.data['user_id'] = bundle.data['user'].data['id']
bundle.data['user_name'] = bundle.data['user'].data['first_name']
bundle.data['user_uri'] = bundle.data['user'].data['resource_uri']
del bundle.data['user']
return bundle