根据非权限标准显示和隐藏django中的菜单项?

时间:2018-01-15 07:38:37

标签: python django

我在名为Company的{​​{1}}上有一个字段leave_approversManyToManyField

Users可以批准他们作为休假审批人的公司中的其他用户的许可。他们还会在请假时收到电子邮件。

我现在想根据用户是否为leave_approvers来显示或隐藏主布局中的Approve Leave标签。

  1. 我决定让leave_approver字段存在缺陷,因为我应该使用内置授权或django-guardian之类的内容。请注意,我正在向leave_approver发送电子邮件,这意味着

  2. 我是否可以在leave_approvers中进行查询,以检查用户是否为base.html。如何做到这一点肯定会有性能受损?

1 个答案:

答案 0 :(得分:0)

在考虑使用django权限(通过上下文处理器自动添加到上下文)之后,我认为这是最佳途径。 在模板中使用以下内容:

{% if perms.foo.can_vote %}

但是,在我的情况下,我偷工减料并查询基本模板中的所有请假批准者,这比上下文中预先构建的perms慢得多。

{% if user in user.company.leave_approvers.all %}
    <li role="separator" class="divider"></li>
    <li><a href="{% url 'leave:pending' %}">Pending Leave Approval</a></li>
{% endif %}