【问题标题】:Django: check for value in ManyToMany field in templateDjango:检查模板中ManyToMany字段中的值
【发布时间】: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 %}

谢谢。

【问题讨论】:

    标签: django django-models django-templates


    【解决方案1】:

    在您看来,创建一个包含此用户所属组 ID 的 setset 的主要用途之一是成员资格测试。

    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 %}
    

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 2022-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多