我在Company
上有一个叫做leave_approvers
的场地,这是ManyToManyField
到Users
。
leave_approvers
可以批准他们作为休假批准人的公司中的其他用户的许可。他们还会在请假时收到电子邮件。
我现在想根据用户是否是Approve Leave
在主布局中显示或隐藏leave_approver
选项卡。
leave_approver
领域有缺陷,因为我应该使用内置授权或类似django-guardian。请注意,我正在向leave_approvers
发送电子邮件,这意味着base.html
中查询是否用户是leave_approver
。如何做到这一点肯定会有性能影响?在考虑使用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 %}