Разрешения на основе строк в Django - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть простая модель 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 должнополучить реализацию.

Если текущий пользователь находится в «группе_ответственности», то ему разрешено просматривать и изменять его.

AFAIK django guardian не очень подходит для этого.См. Эту связанную страницу: https://django -guardian.readthedocs.io / en / stable / userguide / performance.html

Даже решение «Прямые внешние ключи» не соответствует.Текущая модель уже содержит все необходимое для фильтрации строк.

Как включить разрешение на основе строк для django и использовать модель журнала для проверки разрешений?

1 Ответ

0 голосов
/ 25 сентября 2018

использует get_queryset () help?

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