尝试按登录用户过滤数据,但是代码导致显示所有用户数据,而不仅仅是显示用户创建的数据。我在这里想念什么? 序列化器没有问题。我想我这里缺少一些基本知识。
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": []
}
]
}
答案 0 :(得分:1)
您的主要问题是您忘记了将过滤后的查询集分配回一个变量。另外,您可以立即按用户进行过滤。
class TimelinePostList(generics.ListCreateAPIView):
serializer_class = TimelinePostSerializer
def get_queryset(self):
return Timeline_Post.objects.filter(author=self.request.user)