首页 > 解决方案 > 如何在我的函数视图中为每个帖子传递一个布尔值?

问题描述

我的views.py

def problems_list(request):
    queryset = Post.objects.filter(created__range=['2020-03-01', '2020-03-31'])

    def is_liked(self):
        #if currently logged on user has already liked the post then
            is_liked = True
        #else
            is_liked = False


    context = {
        'posts': queryset,
        'is_liked': is_liked
    }
    return render(request, 'main/problem.html', context)

我的model.py

class Post(models.Model):
    likes = models.ManyToManyField(User, related_name='likes', blank=True, default=None)

在每个帖子上,我想检查用户是否喜欢该帖子,以及他是否传递了一个与该帖子相关的布尔变量,以表明他喜欢它。我不确定如何添加与每个帖子相关的变量。我正在阅读一些,发现我可能需要第二个模型来满足我的喜好。这是一个更好的选择吗?

我可以在 shell 中为单个帖子运行它,但我希望能够在所有帖子中调用它。

In [1]: from main.models import Post

In [2]: from django.contrib.auth.models import User

In [3]: user = User.objects.first()

In [4]: post = Post.objects.first()

In [5]: post.likes.all()
Out[5]: <QuerySet [<User: user1>, <User: user2>, <User: user3>]>

In [6]: post.likes.filter(username = user).exists()
Out[6]: True

标签: pythondjango

解决方案


推荐阅读