我想要一个EmbeddedListField的评论只有当我'获得'一个帖子时才显示,而不是当我'获取'帖子列表时

时间:2013-05-20 10:25:14

标签: tastypie mongoengine django-nonrel

我有一个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的消费者来说是不好的设计。

1 个答案:

答案 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