如何在Django中过滤响应

时间:2019-02-02 02:28:09

标签: django django-rest-framework

我正在创建一个仅限用户的测试帖子。

我尝试获取用户帖子,但我不知道如何过滤响应数据。

def test_posts_limited_to_user(self):
    """Test retrieving posts for user"""
    user2 = get_user_model().objects.create_user('admin@admin.com', 'adminPASS@123')
    sample_post(user=user2)
    sample_post(user=self.user)

    res = self.client.get(POSTS_URL, {'user': self.user.id})

    posts = Post.objects.filter(user=self.user)
    serializer = PostSerializer(posts, many=True)
    self.assertEqual(res.status_code, status.HTTP_200_OK)
    self.assertEqual(len(posts), 1)
    self.assertEqual(res.data, serializer.data)

但它返回所有帖子

1 个答案:

答案 0 :(得分:0)

我通过在视图中添加过滤器来解决它

def get_queryset(self):
    """Retrieve the posts for the authenticated user"""
    user = self.request.query_params.get('user')
    queryset = self.queryset
    if user:
        queryset = queryset.filter(user=user)

    return queryset.all()