gpt4 book ai didi

python - django-guardian 如何让对象继承相关对象的权限?

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:10 28 4
gpt4 key购买 nike

我有两个模型:

class ContactGroup(models.Model):
name = models.CharField(max_length=40)
class Meta:
permissions=(('view_group_contacts', 'View contacts from group'))


class Contact(models.Model):
name = models.CharField(max_length=40)
group = models.ForeignKey(ContactGroup)
class Meta:
permissions=(('view_contact', 'View contact'))

例如,当我执行 `get_objects_for_user(User, 'appname.view_contact) 但仍保留更改个人联系人权限的选项时,如何让 django guardian 考虑 ContactGroup 权限?(不是为了排除,只是为了授予权限当用户没有整个组的权限时查看单个联系人)

最佳答案

抱歉,django-guardian 不支持这种行为。至于 has_perm - 将它用于查询集会非常低效,因为我们需要对表中的每一行执行 >=1 查询。

您可以先为 ContactGroup 执行 get_objects_for_user,然后为 Contact 执行,并使用第一个查询的结果扩展最后一个查询集。像这样的东西:

contact_groups = get_objects_for_user(user, 'appname.view_group_contacts', ContactGroup)
contacts = get_objects_for_user(user, 'appname.view_contact', Contact)

合并这些仍然存在问题,但好吧,这是可能的。

关于python - django-guardian 如何让对象继承相关对象的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23734455/

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