django - 每个项目使用基于 Django 类的 LisView 发送上下文
问题描述
在基于 Django 类的 ListView 中,我发送项目列表及其详细信息,在检查用户是否在对象的收藏夹 (ManyToManyField) 字段后,我还想发送True
\False
或0\1
此项目是否在用户书签列表中。id
if query_set['posts'][i].favorites.filter(id=self.request.user.id).exists():
# send True
else:
# send False
在模板中,如果它是真的,我想做一件事,如果它是假的,我想做另一件事。
{% if True %}
... # This means that this item has already been bookmarked.
{% else %}
... # This means that this item has not been bookmarked before.
{% endif %}
我的ListView
:
class PostsListView(ListView):
template_name = 'user_post_list.html'
model = Post
def get_context_data(self, **kwargs):
query_set = super(PostsListView, self).get_context_data(**kwargs)
program = UserExtra.objects.filter(user=self.request.user).values('program')[0]['program']
if program == 'Post':
query_set['posts'] = Post.objects.filter(query1)
is_favorite = False
for i in range(0, len(query_set['posts'])):
if query_set['posts'][i].favorites.filter(id=self.request.user.id).exists():
is_favorite = True
else:
is_favorite = False
if program == 'Send':
query_set['sends'] = Post.objects.filter(query2)
is_favorite = False
for i in range(0, len(query_set['sends'])):
if query_set['sends'][i].favorites.filter(id=self.request.user.id).exists():
is_favorite = True
else:
is_favorite = False
elif ...:
....
return query_set
解决方案
一天后,我找到了解决方案:在views.py
:
if query_set['posts'][i].favorites.filter(id=self.request.user.id).exists():
query_set['posts'][i].is_favorite = True
else:
query_set['posts'][i].is_favorite = False
在模板中:
{% for object in posts %}
{% if object.is_favorite == True %}
# Anything that should be executed if is_favorite is True.
{% else %}
# Anything that should be executed if is_favorite is False.
{% endif %}
推荐阅读
- authentication - 如何配置 axios 以使用 auth 请求 WebAPI?
- python - 如何用数据框列中的字符串列表替换单个字符串
- vue.js - Vuetify数据表如何使用主题颜色设置全选列的背景颜色?
- javascript - 如何替换javascript中所有出现的字符串?
- javascript - 关于英国政府新的外出就餐帮助计划网站的问题
- linux - 如何在 windows 和 linux 上为 react-native 项目运行 detox?
- c# - 如何在 CIL (MSIL)“调用实例 void valuetype [..type]”中返回或保存值?(通用中间语言)
- javascript - 表单中的下拉列表在使用节点 js 提交后清除值
- r - 检查变量并根据组归属对其进行分组
- r - 按顺序读取多个 txt 文件并将它们组合成一个数据帧,但在 r 中标记新生成的数据帧中每一行的来源