Сравните пользовательские атрибуты в шаблоне, используя оператор IF - PullRequest
1 голос
/ 01 апреля 2019

У меня есть список пользователей, и я хочу отображать их задачи, только если выбранный пользователь принадлежит к тому же отделу.У моих моделей есть поле отдела, которое я хочу сравнить.Это мой шаблон кода.

{% 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'

Мойmodels.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 ]

2 голосов
/ 01 апреля 2019

У вашей логики фильтрации в представлении. Вы можете переопределить метод get_queryset по умолчанию и возвращать только те Todos, которые вам нужны.

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)

А затем просто переберите возвращенные данные, как вы уже делаете.

0 голосов
/ 01 апреля 2019

Если я четко понимаю ваш вопрос, вы можете сравнить его так:

{% if todo.user.id == user.id %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...