python - 如何在我的函数视图中为每个帖子传递一个布尔值?
问题描述
我的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
解决方案
推荐阅读
- mysql - How to import a 10GB file to MySQL?
- c++ - 在 cpp 中使用 for_each 循环遍历数组
- google-bigquery - 通过查询从 BigQuery 表中删除一个月数据
- powershell - 运行批处理调用在 CMD 中返回值脚本的 PowerShell。控制台中没有来自 PowerShell 脚本的输出
- r - 使用 DRM 的剂量反应模型错误的 ED50
- c - 如何使用 trace() 编辑 C 函数调用和 setMethod 调用
- awk - awk : Compare 2 files , find missing fields and append the complete line
- vue.js - 尝试在组件 v-for 迭代中呈现文本值时,VueJs DropDown 选项值未定义
- list - 如何在 SwiftUI 中删除列表选择指示器和分隔符?
- javascript - "Cannot read property 't' of undefined" error when using vuetify v-carousel component