使用IF语句比较模板中的用户属性

时间:2019-04-01 10:46:35

标签: django python-3.x django-templates

我有一个用户列表,并且仅在所选用户属于同一部门时才希望显示其任务。我的模型有一个我想比较的部门字段。 这是我的模板代码。

{% extends 'view_users.html' %}
{% block view_user_tasks %}
    <a href="{% url 'view_users' %}"> Back</a>
    <p> todo lists for {{ user }}</p>
      {% for todo in view_user_tasks %}
      <a href="{% url 'detail' todo.id %}" id="left_pencil"></a>
      <a id="{{todo.id}}" class="todo_remove"></a>
     {% endfor %}
{% endblock view_user_tasks %}

我想做的是评估这种情况:

if request.user.Department == user.Department:
    show user tasks

这是我各自的看法。

class ViewUsers(ListView):
    model = CustomUser
    template_name = 'view_users.html'

class ViewUserTasks(ListView):
    model = Todo
    template_name = 'view_user_tasks.html'
    context_object_name = 'view_user_tasks'

我的模型。py

class Todo(models.Model):
    title = models.CharField(max_length=30)
    body = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True, blank=True)
    checked = models.BooleanField(default=False)
    owner = models.ManyToManyField(CustomUser)
    id = HashidAutoField(primary_key=True)

    def __str__(self):
        return "%s: %s" % (self.title, self.body)
class CustomUser(AbstractUser):
    Department = models.CharField(max_length=30, blank=True)

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

在视图中执行过滤逻辑。您可以覆盖默认的get_queryset方法并仅返回所需的待办事项。

class ViewUserTasks(ListView):
    template_name = 'view_user_tasks.html'
    context_object_name = 'view_user_tasks'

    def get_queryset(self):
        return Todo.objects.filter(user__Department=self.request.user.Department)

然后像您已经做的那样循环遍历返回的数据。

答案 1 :(得分:0)

如果我清楚理解您的问题,可以这样比较:

{% if todo.user.id == user.id %}