如何在通过Tastypie为特定用户返回内容之前进行一些处理?
例如,假设我有一个用户有帖子的应用,也可以关注其他人的帖子。我想把这个人的帖子和他们关注的人的帖子结合起来,并将其作为一个数组返回。
所以让我们说在Tastypie中我想从这个人的时间线上得到最新的20个帖子:我需要得到用户,处理这些信息并以JSON格式返回,但我不确定如何我会处理这个并使用Tastypie返回它。
任何帮助?
答案 0 :(得分: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())。