python - Django - 代理模型的权限

标签 python django model data-migration

我从 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)
    ]

管理面板中的 Gestore 模型:

Group in admin panel

给定权限 can_manage_institutions 未应用于数据迁移中的模型。

如何使用 django 权限系统将权限应用于继承自 auth.Group 的代理模型?

最佳答案

这是一个 known issue .有一个 recently updated pull request修复它,如果幸运的话,它会在下一个版本的 Django 中修复。

与此同时,上面的票证中有一些建议的解决方法。最简单的似乎是 manually create a migration对于指向您的代理模型的非托管模型,它将触发创建适当的权限对象:

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()),
    ],
),

您的里程数可能会因此而有所不同 - 我不确定这样做是否完全安全。

关于python - Django - 代理模型的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808149/

相关文章:

python - 如何打印 python 变量的值

python - Django分页: switch between paginated/non-paginated ListView

python - 在 Django 中截断 SQL 查询的日志记录

backbone.js - Backbone : restore model's attributes value after a failed save with patch:true

javascript - SAPUI5:如何以编程方式访问 ODataModel 数据?

python - 在 AWS Lambda 中使用存储在 S3 上的 pickled 文件

Python Twilio 与客户端进行调用

python - 如何国际化方法注释以显示 django-admindoc

javascript - 从另一个组件设置模型后,Angular2 View 不更新

python - 如何确定文件是否为只读