gpt4 book ai didi

django - 继承 Django UserProfile 模型中的组权限

转载 作者:行者123 更新时间:2023-12-02 09:31:22 26 4
gpt4 key购买 nike

假设我有一个项目,我事先知道我只有三个用户组。我可以提前定义它们并从 GroupParent 继承,然后使用这些组选项将字段添加到我的 UserProfile 中吗?这基本上就是我想做的:

class GroupParent(??):
class Meta:
permissions = (
('do_something', 'Can do something'),
('edit_task', 'Can edit task'),
);

class GroupAdmin(GroupParent):
class Meta:
// I want to inherit the permissions from the Mixin and add a few
// I know this would only overwrite... how do I do it?
permissions = (
('do_fancy_tasks', 'Can do fancy tasks'),
)

class GroupCoordinator(GroupParent):
class Meta:
// inherit from GroupParent and add my own
permissions = (
('open_file', 'Can open files'),
)

class GroupNormal(GroupParent):
class Meta:
// inherit from GroupParent and add my own
permissions = (
('open_file', 'Can open files'),
('edit_file', 'Can edit files'),
)

class UserProfile(models.Model):
user = models.OneToOneField(User)
has_manager = models.BooleanField()
...
...
group = models.CharField(max_length=2, choices=GROUP_CHOICES) // how??

这是否是一种合理的方法,或者我应该在应用程序构建后(或在我构建它时)放弃并设置组+权限?

另外...使用 django-guardian 相对于 django 的默认权限功能有什么优势?如果我打算将它与这些模型一起使用,我应该记住什么?谢谢!

最佳答案

简单的元组加法怎么样?

class GroupParent(object):
class Meta:
permissions = (
('do_something', 'Can do something'),
('edit_task', 'Can edit task'),
)

class GroupAdmin(GroupParent):
class Meta:
permissions = GroupParent.Meta.permissions + (
('do_fancy_tasks', 'Can do fancy tasks'),
)

这没关系,因为 GroupParent 只是一个 mixin。如果 GroupParent 是 Django 模型,则必须使用 GroupParent._meta.permissions

关于django - 继承 Django UserProfile 模型中的组权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com