Very simple extension that adds a permissions check on the field in admin
- Python 2.7+ or Python 3.3+
- Django 1.8+
Use your favorite Python package manager to install the app from PyPI, e.g.
Example:
pip install django-admin-permissions
Add admin_permissions
to INSTALLED_APPS
:
Example:
INSTALLED_APPS = (
...
'admin_permissions',
...
)
Use class FieldPermissionMixin
and set permissions using fields_permissions
:
from django.contrib import admin
from admin_permissions.admin import FieldPermissionMixin
class ArticleAdmin(FieldPermissionMixin, admin.ModelAdmin):
fieldsets = [
('General', {
'fields': ['title', 'slug', 'text'],
}),
('SEO', {
'fields': ['seo_title', 'seo_description'],
}),
]
fields_permissions = {
# 'permission': ('field',)
'articles.can_change_admin_seo_fields': ('seo_title', 'seo_description'),
}
# in articles/models.py:
class Article(models.Model):
class Meta:
permissions = (
('can_change_admin_seo_fields', _('Show SEO fields')),
)
Then run makemigrations to add all the permissions in your database
If you want the user to see the field, but could not edit them, set fields_permissions_read_only
is True
, default False
.