2017-08-23 86 views
8

Şimdi Django grup modülünü kullanarak yeni gruplar oluşturabilirim. from django.contrib.auth.models import Group Gruplara izinler atayabilirim. Örneğin, Group(name="HR") tarafından "HR"Dinamik olarak django'da nasıl izinler oluşturabilirsiniz?

yeni bir grup oluşturdum.

Şimdi

  • can_create_hr
  • can_edit_hr gibi izinleri oluşturmak istiyorum

yapayım diğer gruplara bu izni atamak mümkün.

Bunu nasıl yapabilirim?

cevap

1

Gruplara da doğrudan izinler oluşturabilir ve atayabilirsiniz. Sadece o zaman başka bir gruba bu izni atamak sadece izin nesne almak ve aynı şekilde atamak isterseniz izin grubunun

from django.contrib.auth.models import User, Group, Permission 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get(app_label='app_name', model='model_name') 
permission = Permission.objects.create(codename='can_create_hr', 
             name='Can create HR', 
             content_type=content_type) # creating permissions 
group = Group.objects.get(name='HR') 
group.permissions.add(permission) 

izni eklemek oluşturun.

permission = Permission.objects.get(codename='can_create_hr') 
group= Group.objects.get(name='some_name') 
group.permissions.add(permission) 

Sen boş göç oluşturursanız, (cevap yukarıdaki borç) böyle bir şey yapabileceği docs

1

bu konuda daha fazla bilgi edinebilirsiniz:

def create_groups_and_permissions(apps, schema_editor): 
    Group = apps.get_model('auth', 'Group') 
    ContentType = apps.get_model('contenttypes', 'ContentType') 
    Permission = apps.get_model('auth', 'Permission') 
    emit_post_migrate_signal(2, False, 'default') # this creates default permissions (in case this migration was run simultaneously with the creation of relevant models and you need to grab those perms) 
    content_type = ContentType.objects.get(app_label='app_name', model='model_name') 
    permission = Permission.objects.create(codename='can_create_hr', 
            name='Can create HR', 
            content_type=content_type) # creating permissions 
    group = Group.objects.filter(name='HR') 
    group.permissions.add(permission) 

class Migration(migrations.Migration): 
    dependencies = [ 
     ('lsoa', '0001_initial'), 
    ] 

    operations = [ 
     migrations.RunPython(create_groups_and_permissions) 
    ]