在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()在最终的超集)。
很酷,现在就试试。还有一个问题:是否可以通过通过url传递的内容获取用户?我了解基本过滤使用URL来获取属性 - 我如何在上面的示例中使用该用户? – arooo
当您使用内置于Django中的验证机制时,用户将存储在会话中。所以你可以从通过方法调用来的请求对象中获取它。例如:.filter(author = User.objects.get(user = request.user)。如果您使用的是Django身份验证,则request.user调用会让您成为用户,如下所示:https:// docs。 djangoproject.com/en/dev/topics/auth/ – Mario
我的意思是更多的特定用户,如果我想传递一个用户名并获得该用户的特定职位 – arooo