Django 简单查询过滤器

Django Simple Query Filter

尝试按登录用户过滤数据,但代码会显示所有用户数据,而不仅仅是用户创建的数据。我在这里错过了什么? 序列化程序没有问题。我想我在这里遗漏了一些基本知识。

views.py

   class TimelinePostList(generics.ListCreateAPIView):
    serializer_class = TimelinePostSerializer
    def get_queryset(self):
        queryset = Timeline_Post.objects.all()
        user = self.request.user
        queryset.filter(author = user)
        return queryset

models.py

   class Timeline_Post(models.Model):
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now= True)
    text = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

实际结果:

{
"count": 2,
"next": null,
"previous": null,
"results": [
    {
        "slug": "secon_post",
        "author": 8,
        "updated_on": "2019-08-06T18:47:43.915249Z",
        "text": "secon_post",
        "created_on": "2019-08-06T18:47:43.915249Z",
        "status": 0,
        "media": []
    },
    {
        "slug": "lkkej",
        "author": 5,
        "updated_on": "2019-08-06T18:04:11.175809Z",
        "text": "first Post",
        "created_on": "2019-08-06T18:04:11.175809Z",
        "status": 1,
        "media": []
    }
]

}

预期结果:

{
"count": 1,
"next": null,
"previous": null,
"results": [
    {
        "slug": "lkkej",
        "author": 5,
        "updated_on": "2019-08-06T18:04:11.175809Z",
        "text": "first Post",
        "created_on": "2019-08-06T18:04:11.175809Z",
        "status": 1,
        "media": []
    }
]

}

您的主要问题是您忘记将过滤后的查询集分配回变量。此外,您可以立即按用户筛选。

class TimelinePostList(generics.ListCreateAPIView):
    serializer_class = TimelinePostSerializer

    def get_queryset(self):
        return Timeline_Post.objects.filter(author=self.request.user)