【问题标题】:How can I filter groups based on user_id in django-template-language如何根据 django-template-language 中的 user_id 过滤组
【发布时间】:2023-01-10 23:47:07
【问题描述】:

如何使用 if else 条件根据 Django 模板语言中的用户过滤组

 <tbody>
      {% for group in groups %}
      <tr>
          <td>{{group.name}}</td>                                       
          <td><input type="checkbox" name="add_group[]" id="group-{{group.id}}" value=" 
          {{group.id}}" 
                                   
           checked   
           ></td>
                                                                       
       </tr>
     {% endfor %}                                 
  </tbody>

【问题讨论】:

  • 最好的做法是在视图或模型中而不是在模板中包含逻辑。在您的情况下,我会在视图中进行过滤或将其添加到用户模型中。如果您需要任何帮助,请告诉我。

标签: python django django-template-filters


【解决方案1】:

您可以使用 related object referenceDTL 中的点符号访问 User 组:User.groups.all

例如,如果您只想在特定用户所在的组中使用 checked

网址.py:

urlpatterns = [
    ...
    path('user/<int:id>/', views.user_detail, name='user-detail')
    ...
]

视图.py

from django.shortcuts import get_object_or_404
from django.contrib.auth.models import Group

def user_detail(request, id):
    user = get_object_or_404(User, id=id)
    groups = Group.objects.all()
    context = {
        'user': user,
        'groups': groups
    }
    return render(request, 'user_group.html', context)

用户组.html

{% extends 'base.html' %}

{% block content %}
<h1>Username: {{user.username}}</h1>

<h2>Groups</h2>
<tbody>
    {% for group in groups %}
    <tr>
        <td>{{group.name}}</td>                                   
        <td>
            <input 
                type="checkbox" 
                name="add_group[]" 
                id="group-{{group.id}}" 
                value="{{group.id}}" 
                {% if group in user.groups.all %} checked {% endif %}
            >
        </td>                                                        
     </tr>
   {% endfor %}                                 
</tbody>
{% endblock %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2021-04-10
    • 2020-12-15
    • 2015-03-19
    • 2022-12-07
    • 2018-01-29
    相关资源
    最近更新 更多