Django:检查模板中ManyToMany字段的值

时间:2011-12-09 06:46:38

标签: django django-models django-templates

我的Django应用程序中有以下模型:

class Group(models.model):
    name=models.CharField(max_length=30)
    users=Models.ManyToManyField(User)

在我的模板中,我想显示每个组,以及每个组下方的按钮。如果用户已经在组中,我想显示“离开组”按钮,如果他们不在组中,我想显示“加入组”按钮。

确定当前登录用户是否在每个组中的最有效方法是什么?我宁愿不查询显示的每个组的数据库,如果我只是执行以下操作,它似乎会发生。

{% if user in group.users.all %}

感谢。

1 个答案:

答案 0 :(得分:7)

在您的视图中,创建此用户所属的set个组ID。 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 %}