在列表中使用 distinct() 函数。不同的功能在列表中不起作用

Using distinct() function in list. distinct function is not working in list

我正在构建一个博客应用程序,并且我正在一个视图中过滤许多查询。我的意思是,我正在过滤 request.userBy 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)

它会给你独特的帖子。