Django:检查模板中ManyToMany字段中的值
Posted
技术标签:
【中文标题】Django:检查模板中ManyToMany字段中的值【英文标题】:Django: check for value in ManyToMany field in template 【发布时间】:2012-01-16 12:57:39 【问题描述】:我的 Django 应用中有以下模型:
class Group(models.model):
name=models.CharField(max_length=30)
users=Models.ManyToManyField(User)
在我的模板中,我想显示每个组,以及每个组下方的按钮。如果用户已经在组中,我想显示一个“离开组”按钮,如果他们还没有在组中,我想显示一个“加入组”按钮。
确定当前登录的用户是否在每个组中最有效的方法是什么?我宁愿不查询显示的每个组的数据库,如果我只是执行以下操作,似乎会发生这种情况。
% if user in group.users.all %
谢谢。
【问题讨论】:
【参考方案1】:在您看来,创建一个包含此用户所属组 ID 的 set
。 set
的主要用途之一是成员资格测试。
user_group_set = set(current_user.group_set.values_list('id',flat=true))
然后将其传递到您的模板上下文中:
return render_to_response('template.html','user_group_set':user_group_set)
在您的模板中,针对每个组使用:
% if group.id in user_group_set %
【讨论】:
以上是关于Django:检查模板中ManyToMany字段中的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在模板上显示 Django ManyToMany?需要简单的代码
django DetailView 没有从 ManyToMany 字段中捕获数据
Django 1.4 - ManyToMany 字段看起来像用户身份验证中的用户权限字段