2017-08-23 14 views
8

अब मैं Django समूह मॉड्यूल का उपयोग कर नए समूह बना सकता हूं। from django.contrib.auth.models import Group मैं समूह को अनुमतियां असाइन कर सकता हूं। उदाहरण के लिए मैंने Group(name="HR") द्वारा एक नया समूह "एचआर"django में गतिशील रूप से अनुमति कैसे बना सकते हैं?

बनाया।

अब मैं की तरह

  • can_create_hr
  • can_edit_hr अनुमतियाँ बनाना चाहते हैं

मैं चाहिए अन्य समूहों को यह अनुमति प्रदान करने में सक्षम।

मैं यह कैसे कर सकता हूं?

उत्तर

1

आप समूह को सीधे अनुमति भी बना सकते हैं और असाइन कर सकते हैं। बस अनुमति समूह

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) 

करने की अनुमति जोड़ने आप तो एक और समूह को यह अनुमति असाइन सिर्फ अनुमति वस्तु मिलता है और उसी तरह से प्रदान करना चाहते हैं पैदा करते हैं।

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

आप docs

1

में इसके बारे में अधिक पढ़ सकते हैं यदि आप एक खाली प्रवास बनाते हैं, तो आप (उत्तर ऊपर से उधार) कुछ इस तरह कर सकते हैं:

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) 
    ] 
संबंधित मुद्दे