检查Django模板中queryset中的字符串
我知道这应该是直截了当的,但由于某些原因,我没有得到我想要的结果 此指令:检查Django模板中queryset中的字符串,django,django-templates,Django,Django Templates,我知道这应该是直截了当的,但由于某些原因,我没有得到我想要的结果 此指令:{{user.profile.role.all}在我的Django模板中输出以下内容: <QuerySet [<Role: Creator>, <Role: Performer>, <Role: Venue>]> 对吧??但是,上面提到的if返回false。为什么会这样?这不起作用的原因是字符串与同名字符串的角色不同 您可以将一组角色名称传递给模板,例如: context[
{{user.profile.role.all}
在我的Django模板中输出以下内容:
<QuerySet [<Role: Creator>, <Role: Performer>, <Role: Venue>]>
对吧??但是,上面提到的
if
返回false。为什么会这样?这不起作用的原因是字符串与同名字符串的角色不同
您可以将一组角色名称传递给模板,例如:
context['role'] = Role.objects.filter(
profile__user=self.request.user
).values_list('type', flat=True)
context['role']=role.objects.filter(
profile\uuu user=self.request.user
).values\u list('type',flat=True)
因为字符串与具有给定名称的角色不同?好的,谢谢。那么,首先在视图中构建一个列表(字符串)会更好吗,因为我将在模板中执行几次此检查?可能最好是一组字符串,因为这有O(1)个平均查找时间。对不起,我有点迷路了。什么是“字符串集”?如果这就是我的观点:context['role']=role.objects.filter(profile\uu id=self.get\u object().id)
,我会怎么做?你能分享你的角色
模型吗?是的,就是这样!谢谢。等等,但是如果列表中有一个或另一个,为什么{%if roleList%}
返回true?我不能一次检查多个字符串吗?@HBMCS:这是因为'venture'
的真实性是正确的,因为它是一个非空字符串,您在roleList%}中写如果('Venue')或('Promotor')毕竟,您应该在roleList%}中写为{%if'venture'或'Promotor'。这是有效的:(即返回false){如果roleList中的“地点”或roleList%中的“发起人”}
虽然对我来说似乎不是很枯燥。@HBMCS:组不是权限,但是一个组可以有零、一个或多个权限。因此,是的,你可以使用组来定义一个角色
模型。Django的管理页面通常也有页面来编辑权限。此外,还有用于权限的装饰程序n支票。
context['role'] = Role.objects.filter(
profile__user=self.request.user
).values_list('type', flat=True)