0

在通过 Tastypie 为特定用户返回某些东西之前,我该如何进行一些处理?

例如,假设我有一个应用程序,其中用户有帖子并且还可以关注其他人的帖子。我想将此人的帖子与他们关注的人的帖子结合起来,并将其作为一个数组返回。

因此,假设在 Tastypie 中,我想从这个人的时间线中获取最新的 20 条帖子:我需要获取用户,处理此信息并以 JSON 格式返回,但我不确定我会如何处理这个并使用 Tastypie 返回它。

有什么帮助吗?

4

1 回答 1

3

在 get_object_list 中做更复杂的处理。它在脱水过程开始之前被调用,即在创建传递回的 JSON 之前。

class PostResource(ModelResource):
    class Meta:
        queryset = Post.objects.all()

    def get_object_list(self, request):
        this_users_posts = super(PostResource, self).get_object_list(request).filter(user=User.objects.get(user=request.user))
        all_the_posts_this_user_follows = super(PostResource, self).get_object_list(request).filter(follower=User.objects.get(user=request.user))

        return this_users_posts | all_the_posts_this_user_follows

您需要修复这些查询,以便它们适用于您的特定情况。然后诀窍是通过连接它们来组合你得到的两个不同的查询集。使用 | 得到他们的全套,使用 & 只得到他们的重叠。您想要完整的集合(除非用户也可以关注他们自己的帖子,那么您可能可以在生成的超集上调用 distinct())。

于 2012-09-17T14:11:01.113 回答