- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在创建一个结构,其中我的员工属于一家公司。
在这家公司内,我需要能够创建多个组。排名,如果你愿意。您可以为较低的等级分配较少的权限,而为较高的等级分配更多的权限。
我想获得对象级别的权限,我注意到 django-guardian 项目正是我需要的。它适用于 native User 和 Group 对象,所以我现在试图找到一种方法来在公司对象中实现 native 组对象。
我面临的问题是组中的名称是唯一的。所以如果2家公司添加同一个组,就会出现错误。
我发现了一个在某种程度上起作用的实现,但对我来说似乎很“hacky”。在我的公司中,我声明了一个引用 Group 的组变量:
class Company(models.Model):
...
groups = models.ManyToManyField(Group, through='CompanyRole')
class CompanyRole(models.Model):
group = models.ForeignKey(Group)
company = models.ForeignKey(Company)
real_name = models.CharField(max_length=60, verbose_name=_('Real name'))
objects = CompanyGroupManager()
class CompanyGroupManager(models.Manager):
def create_group(self, company, group_name):
un_group_name = str(company.id) + '#' + group_name
group = Group.objects.create(name=un_group_name)
company_group = self.model(
real_name=group_name,
company=company,
group=group
)
company_group.save(using=self._db)
return company_group
最佳答案
不幸的是,没有办法绕过这个独特的要求,这是因为这个字段被用作 id:
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.unique
您的选择如下:
1)模拟模型。
您基本上只需创建一个没有独特要求的新组模型。这里的缺点是你需要在任何地方使用它,所以如果这需要更新 3rd 方应用程序,它可能不值得。
2)让你的名字独一无二。 (正如你所做的那样)
确保你很好地记录你的约定,以便所有 future 的编码人员都知道他们在看什么。像“公司名称”#“组名称”这样的东西比 ID 更直观。如果哈希可能出现在任何一个中,则使用更确定的分隔符(“__”是在 django 中连接相关概念的一种相对常见的方式,我可能会这样做)。
我建议您添加以下内容,以便您轻松访问该名称。
def get_name(self):
# Explain how you get the group name from your uniqueified name
return self.name.split('#')[1]
Group.add_to_class('get_name', get_name)
my_group.get_name()
关于django - 使用 Django 和 django-guardian 对象权限按对象分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23460057/
我正在启动一个具有复杂权限结构的应用程序,这将不可避免地由用户自己管理。我在模型中有以下权限: class Meta: permissions = ( ('can_view', 'Vi
我想知道是否可以在没有用户模型的情况下使用 Guardian,以及如何使用它。 我只将 Phoenix 用于服务器、微型 API 和 channel 。我在浏览器中有一个带有 PouchDB 的数据库
谁能推荐一个使用 django-guardian 的好的开源应用程序?我在理解 API 方面没有问题,但我很想看到一个示例来了解实现最佳实践(数据库设计等) 最佳答案 如果您克隆 django-gua
我正在使用 django-guardian 来检查用户的对象权限。在我的特殊情况下,我扩展了用户模型。在我的 models.py 中,我扩展了这样的用户模型: enter image descript
我正在使用 django-guardian 来检查用户的对象权限。在我的特殊情况下,我扩展了用户模型。在我的 models.py 中,我扩展了这样的用户模型: enter image descript
尝试搜索监护人模式,但我找不到任何可以回答我问题的东西,所以我又来了。在我正在阅读的书中,作者使用了一行他称之为“监护人模式”的代码,但我并不真正理解它是如何工作的。这是示例,如果有人能向我解释一下,
我已按照 django-guardian 文档中的用户指南来设置 django-guardian。这使我能够控制某个组是否可以查看特定类(class)。这是 django-guardian 文档中的示
我有两个模型: class ContactGroup(models.Model): name = models.CharField(max_length=40) class Meta:
我有一个父类(super class),它带有带有 finalize() 方法的伸缩构造函数。为了防止子类忘记调用 super.finalize,我编写了一个终结器守护程序(EJ Item 7),就像
我已将 django-guardian 的行级权限添加到我的项目中。 从设置来看,似乎一切正常: 已创建监护人特定表(guardian_groupobjectpermission、guardian_u
我正在使用 django-guardian为了管理每个对象的权限。 对于给定的用户,我授予对一个对象的所有权限: joe = User.objects.get(username="joe") myta
根据Akka docs on the System Guardian , 如果顶级 Actor 抛出 Exception ,它将无限期地重新启动(有 2 个异常(exception) - 没有双关语)
所以我有来自 Guardian API 开放平台的 JSON 格式的数据,我想在 jquery 中解析它,目前我一直在尝试将结果显示到我的 HTML div 上。 数据格式如下:Guardian JS
我正在开发一个实现用户身份验证的网站(使用 Comeonin 和 Guardian)。 我正在实现电子邮件验证。我想我可以利用 Guardian 中的功能来使用 JWT token 生成 url。根据
我在从 The Guardian 的新闻 API 获取文章文本时遇到问题。我有一个类似这样的网址:http://content.guardianapis.com/search?section=tech
我正在创建一个应用程序,它从《卫报》获取新闻。该文档不清楚依赖关系。任何地方都没有这方面的信息。预先感谢您 https://github.com/matarrese/content-api-the-g
当我在 Django 中创建用户时,他没有权限: In [7]: u = User.objects.create(username='aoeu') In [12]: u.user_permission
我正在寻找一个简单的示例,说明如何以与 Guardian 应用程序(包括左侧图像)相同的方式在屏幕上显示数据,我从 php 页面中提取数据,如屏幕截图所示以下。我在互联网上找不到任何符合此描述的示例。
我目前正在对所有对象进行非常笨拙的循环,但这会变得很慢: videos = Video.objects.all() video_list = [] for video in videos: c
有 from guardian.shortcuts import get_objects_for_user 但是关于 from guardian.shortcuts import get_users_
我是一名优秀的程序员,十分优秀!