django - Django 中基于行的权限

标签 django django-permissions django-guardian

我有一个简单的 Django 模型,大致如下所示:

from django.contrib.auth.models import Group
from mylogapp.models import LogType

class Log(models.Model):
    responsible_group = models.ForeignKey(Group)
    description = models.TextField()
    log_type = models.ForeignKey(LogType)

数据库表中将有几百万行。

应该实现 django 管理界面的基于行的权限。

如果当前用户在“responsible_group”中,则允许他查看和修改它。

AFAIK django guardian 不太适合这个。请参阅此相关页面:https://django-guardian.readthedocs.io/en/stable/userguide/performance.html

甚至解决方案“直接外键”也不匹配。当前模型已包含过滤行所需的一切。

如何为django启用基于行的权限并使用Log模型进行权限检查?

最佳答案

是否使用 get_queryset()帮助?

class LogAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super().get_queryset(request)
        return qs.filter(responsible_group__in=request.user.groups.all())

关于django - Django 中基于行的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52498053/

相关文章:

python - 值错误 : Field 'id' expected a number but got 'super' . [04/4/2020 18:15:11] "GET/super_user HTTP/1.1"500 132224

python - Gunicorn 和 Django 1.7 : unable to find module wgsi

javascript - HTML 复选框传递所有值而不是选定值

google-cloud-datastore - 如何在 Django-nonrel 中为 Google App Engine 设置组权限

django - 如何修改 django 以创建 "view"权限?

python - Django 模块的用户权限

permissions - django-guardian 和 django-rest-framework

python - django 2.0 re_path 中的正则表达式

django - 现在如何在Django中处理每个对象的权限?