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