在Django模板中检查权限

时间:2019-03-19 23:23:32

标签: python django django-permissions

我有一个对象数据库,每个对象都具有查看,编辑等权限。以下示例是完整模型的简化版本。

class Warehouse(models.Model):
    ...
    view_permission = models.ForeignKey(Permission, ...)
    edit_permission = models.ForeignKey(Permission, ...)
    ...

创建对象后,将发送pre_save信号以创建和填充这些权限字段。信号处理程序还会创建一个具有创建的某些权限的组。

我的问题是,当我将用户设置为这些动态创建的组之一时,我不知道如何检查用户是否具有该特定权限。

我一直在尝试执行以下操作:

> from django.contrib.auth.models import User
> from myapp.models import Warehouse
> w = Warehouse.objects.get(pk=1)             # get the first object
> u = User.objects.get(username='jhon')       # get a user

用户john属于设置w权限的组。

如果我使用user.get_all_permissions(),它将返回一组字符串。

如果我使用user.has_perm(w.view_permission),它将返回false。

我管理它的唯一方法是输入

> p = w.view_permission
> user.has_perm('%s.%s' % (p.content_type.app_label, p.codename))
True

但这很丑,某种程度上似乎是错误的。

你们是否有更正确的方法来检查这些权限?

0 个答案:

没有答案