Admin की Permissions
In this page:
# Default permissions per model: add, change, delete, view
user.has_perm('app_name.add_modelname')
from django.contrib.auth.models import Permission
user.user_permissions.add(Permission.objects.get(codename='change_modelname'))
चार Default Permissions
हर model के लिए जो Django register करता है, यह अपने आप add, change, delete, और view permissions बनाता है। एक staff user को वह action admin में perform करने के लिए relevant permission चाहिए।
उदाहरण: The Four Default Permissions
Lists the four auto-created permissions for a Book model.
python manage.py shell
>>> from django.contrib.auth.models import Permission
>>> Permission.objects.filter(content_type__model='book')
<QuerySet [<Permission: core | book | Can add book>, <Permission: core | book | Can change book>, ...]>
⚠️ Run this in your own terminal or Node.js environment.
Permissions Directly एक User को Assign करना
कोई permissions न वाला एक staff user (is_staff=True) एक empty admin देखता है। Permissions explicitly grant किए जाने चाहिए, individually या एक group के through।
उदाहरण: Assigning Permissions Directly to a User
Grants the editor user permission to change Book records in the admin.
python manage.py shell
>>> from django.contrib.auth.models import User, Permission
>>> user = User.objects.get(username='editor')
>>> perm = Permission.objects.get(codename='change_book')
>>> user.user_permissions.add(perm)
⚠️ Run this in your own terminal or Node.js environment.
Bulk Permissions के लिए Groups उपयोग करना
एक समय में एक user को permissions assign करने के बजाय, सही permissions वाला एक Group बनाएं और users को इसमें जोड़ें -- आपकी team बढ़ने पर manage करना कहीं ज़्यादा आसान है।
is_superuser इन सबको override करता है: एक superuser assigned permissions या group membership की परवाह किए बिना सब कुछ कर सकता है।उदाहरण: Using Groups for Bulk Permissions
Creates an Editors group with the change_book permission and adds the user to it.
python manage.py shell
>>> from django.contrib.auth.models import Group
>>> editors = Group.objects.create(name='Editors')
>>> editors.permissions.add(perm)
>>> user.groups.add(editors)
⚠️ Run this in your own terminal or Node.js environment.
- एक user को
is_staff=Trueदेना बिना किसी specific permissions के, फिर confused होना कि वे manage करने के लिए कुछ भी न वाला empty admin क्यों देखते हैं। is_staff(जो/admin/में login कर सकता है) कोis_superuser(जो सभी permission checks bypass करता है) के साथ confuse करना।- यह भूल जाना कि permissions individually या bulk में Groups के through भी grant किए जा सकते हैं, सिर्फ per-user नहीं।
- हर model को चार automatic permissions मिलते हैं: add, change, delete, और view।
is_staffadmin login allow करता है; individual permissions decide करते हैं कि एक staff user वहां असल में क्या कर सकता है।- Groups permissions को bundle करते हैं ताकि उन्हें एक साथ कई users को assign किया जा सके।
is_superuserसभी permission checks पूरी तरह bypass करता है।
Chapter Quiz — Complete all 8 topics to unlock
0/8 topics done
Complete these topics first: