gpt4 book ai didi

python - Django-Guardian - 限制组对类的访问

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:49 30 4
gpt4 key购买 nike

我已按照 django-guardian 文档中的用户指南来设置 django-guardian。这使我能够控制某个组是否可以查看特定类(class)。这是 django-guardian 文档中的示例,其中添加了字段(客户):

class Task(models.Model):
summary = models.CharField(max_length=32)
content = models.TextField()
customer = models.CharField(max_length=80)
reported_by = models.ForeignKey(User)
created_at = models.DateTimeField(auto_now_add=True)

class Meta:
permissions = (
('view_task', 'View task'),
)

这(以及 django-guardian 文档示例中的其他代码)允许我通过 django 管理员授予特定用户和组“查看任务”的权限。问题是我想根据客户是谁来限制哪些任务组可以看到。例如,只有分配给客户 A 的顾问才能看到 task.customer = 'A' 的任务。有办法设置吗?

非常感谢任何帮助。

最佳答案

这可以通过 django-guardian 轻松实现,只需要您多编写一些代码即可。

例如,要限制 View 在管理更改列表中返回哪些记录:

from django.contrib import admin
from myapp import models
from guardian.shortcuts import get_objects_for_user


@admin.register(models.Task)
class TaskAdmin(admin.ModelAdmin):
# ...
def get_queryset(self, request):
qs = super(TaskAdmin, self).get_queryset(request)
tasks = get_objects_for_user(request.user, 'myapp.view_task', klass=models.Task)
return qs.filter(task_id__in=tasks.values_list('id'))

类似地,您可以在任何常规 View 中执行此操作。

关于python - Django-Guardian - 限制组对类的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175777/

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