簡體   English   中英

Django-代理模型權限

[英]Django - Permissions to proxy model

我從auth.Group模型創建了一個代理模型,我想對其應用permissions

proxies.py

class InstitutionOwnerGroup(Group):

    # Gestores
    pk = 1

    is_superuser = False
    is_staff = False

    class Meta:
        proxy = True
        permissions = (
            ('can_manage_institutions', 'Gerencia Instituições'),
        )

數據遷移

# Generated by Django 2.1.1 on 2018-10-14 23:30

from django.db import migrations
from horsy.apps.accounts.proxies import InstitutionOwnerGroup


def create_owner_group(app, _schema):
    InstitutionOwnerGroup.objects.create(
        name="Gestores"
    )


class Migration(migrations.Migration):

    dependencies = [
        ('accounts', '0002_add_admin_user'),
    ]

    operations = [
        migrations.RunPython(create_owner_group)
    ]

管理面板中的Gestores模型:

在管理面板中分組

給定的權限can_manage_institutions未應用於數據遷移中的模型。

如何使用django權限系統將權限應用於從auth.Group繼承的代理模型?

這是一個已知問題 最近有一個更新的拉取請求對其進行了修復,因此,運氣好的話,它將在下一版本的Django中得到修復。

同時,上面的票證中有一些建議的解決方法。 最簡單的方法似乎是手動為指向您的代理模型的非托管模型創建遷移 ,然后將觸發要創建的適當權限對象:

migrations.CreateModel(
    name='InstitutionOwnerGroup',
    fields=[
    ],
    options={
        'verbose_name': 'Group',
        'managed': False,  # Make it unmanaged
        'proxy': True,
        'verbose_name_plural': 'Groups',
    },
    bases=('myapp.proxies.group',),
    managers=[
        ('objects', django.contrib.auth.models.GroupManager()),
    ],
),

您的里程可能與此有關-我不確定這樣做是否完全安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM