Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Django模板中queryset中的字符串_Django_Django Templates - Fatal编程技术网

检查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)