在列表中使用 distinct() 函数。不同的功能在列表中不起作用
Using distinct() function in list. distinct function is not working in list
我正在构建一个博客应用程序,并且我正在一个视图中过滤许多查询。我的意思是,我正在过滤 request.user
和 By request.user's friends
发布的两个帖子。 AND appending
列表中的所有过滤结果。但是当我 append
所有结果然后重复的帖子显示在浏览器中。
然后我在列表中使用 distinct() 函数然后显示错误:-
'list' object has no attribute 'distinct'
models.py
class BlogPost(models.Model):
user = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE)
title = models.CharField(max_length=500,default='')
favourites = models.ManyToManyField(User, related_name='favourites ', blank=True)
views.py
def all_blogposts(request):
ALL_POSTS = [].distinct()
#Adding user's post in the list.
user_post = BlogPost.objects.filter(favourites =request.user)[:5]
for post in user_post:
ALL_POSTS.append(post)
#Adding friend's post in the list.
all_posts = BlogPost.objects.all()
requested = request.user.profile.friends.all()
for user_p in requested:
for sets in user_p.user.blogpost_set.all():
ALL_POSTS.append(sets)
context = {'ALL_POSTS':ALL_POSTS}
return render(request, 'all_posts.html', context)
当我使用 distinct()
并检查时,错误一直显示。
我也尝试在 user_post
中的 [:5]
之后使用 distinct()
,但它显示了。
Cannot create distinct fields once a slice has been taken.
显示了许多重复的帖子。
非常感谢任何帮助。
提前致谢。
如果您的列表是
>>> mylist = [1,1,2,3,3,4,5]
>>> print(mylist)
[1, 1, 2, 3, 3, 4, 5]
>>> mylist = list(set(mylist))
>>> print(mylist)
[1, 2, 3, 4, 5]
将您的列表转换为集合并再次列出。
对于你的问题,你可以拿一个新的数组来做:
new_array = []
for post in ALL_POSTS:
if post not in new_array:
new_array.append(post)
它会给你独特的帖子。
我正在构建一个博客应用程序,并且我正在一个视图中过滤许多查询。我的意思是,我正在过滤 request.user
和 By request.user's friends
发布的两个帖子。 AND appending
列表中的所有过滤结果。但是当我 append
所有结果然后重复的帖子显示在浏览器中。
然后我在列表中使用 distinct() 函数然后显示错误:-
'list' object has no attribute 'distinct'
models.py
class BlogPost(models.Model):
user = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE)
title = models.CharField(max_length=500,default='')
favourites = models.ManyToManyField(User, related_name='favourites ', blank=True)
views.py
def all_blogposts(request):
ALL_POSTS = [].distinct()
#Adding user's post in the list.
user_post = BlogPost.objects.filter(favourites =request.user)[:5]
for post in user_post:
ALL_POSTS.append(post)
#Adding friend's post in the list.
all_posts = BlogPost.objects.all()
requested = request.user.profile.friends.all()
for user_p in requested:
for sets in user_p.user.blogpost_set.all():
ALL_POSTS.append(sets)
context = {'ALL_POSTS':ALL_POSTS}
return render(request, 'all_posts.html', context)
当我使用 distinct()
并检查时,错误一直显示。
我也尝试在 user_post
中的 [:5]
之后使用 distinct()
,但它显示了。
Cannot create distinct fields once a slice has been taken.
显示了许多重复的帖子。
非常感谢任何帮助。
提前致谢。
如果您的列表是
>>> mylist = [1,1,2,3,3,4,5]
>>> print(mylist)
[1, 1, 2, 3, 3, 4, 5]
>>> mylist = list(set(mylist))
>>> print(mylist)
[1, 2, 3, 4, 5]
将您的列表转换为集合并再次列出。
对于你的问题,你可以拿一个新的数组来做:
new_array = []
for post in ALL_POSTS:
if post not in new_array:
new_array.append(post)
它会给你独特的帖子。