← Back to Django Course | Chapter 8: Django Admin | Lesson 8 of 8

Admin की Permissions

Admin permissions decide करते हैं कि कौन से staff users हर type के record को view, add, change, या delete करने के लिए allowed हैं।
Syntax
markup
# 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.

bash
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.

bash
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 करना कहीं ज़्यादा आसान है।

Warning: 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.

bash
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.

Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक user को is_staff=True देना बिना किसी specific permissions के, फिर confused होना कि वे manage करने के लिए कुछ भी न वाला empty admin क्यों देखते हैं।
  2. is_staff (जो /admin/ में login कर सकता है) को is_superuser (जो सभी permission checks bypass करता है) के साथ confuse करना।
  3. यह भूल जाना कि permissions individually या bulk में Groups के through भी grant किए जा सकते हैं, सिर्फ per-user नहीं।
चैप्टर सारांश
  • हर model को चार automatic permissions मिलते हैं: add, change, delete, और view।
  • is_staff admin login allow करता है; individual permissions decide करते हैं कि एक staff user वहां असल में क्या कर सकता है।
  • Groups permissions को bundle करते हैं ताकि उन्हें एक साथ कई users को assign किया जा सके।
  • is_superuser सभी permission checks पूरी तरह bypass करता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.