我有一个用户列表,并且仅在所选用户属于同一部门时才希望显示其任务。我的模型有一个我想比较的部门字段。 这是我的模板代码。
{% 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)
我怎么能做到这一点?
答案 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 %}