Как показать права доступа в админке проекта django?
У меня есть приложение на django. И я пытаюсь в панели администратора django ограничить права пользователей с помощью вкладки AUTHENTICATION AND AUTHORIZATION.
Но я заметил, что в моем существующем приложении django на вкладке AUTHENTICATION AND AUTHORIZATION чего-то не хватает.
Потому что я установил чистую установку из django. И вкладка AUTHENTICATION AND AUTHORIZATION выглядела так:
а вкладка AUTHENTICATION AND AUTHORIZATION в моем существующем приложении django выглядит так:
Как вы можете видеть, в моем существующем приложении django в правой части отсутствуют разрешения пользователя.
Что я сделал? Проверил версии. И они одинаковые (чистая версия и взрывоопасная версия)
Я использую django версии: 5.0.6. и библиотеки
Я проверил библиотеки, установленные с помощью pip freeze моей существующей версии:
anyio==4.2.0
asgiref==3.7.2
attrs==23.1.0
azure-common==1.1.28
azure-core==1.29.6
azure-storage-blob==12.19.0
azure-storage-common==2.1.0
certifi==2023.7.22
cffi==1.15.1
charset-normalizer==3.2.0
click==8.1.7
colorama==0.4.6
coreapi==2.3.3
coreschema==0.0.4
cryptography==39.0.0
defusedxml==0.7.1
Django==5.0.6
django-allauth==0.52.0
django-cors-headers==3.10.1
django-dotenv==1.4.2
django-filter==23.2
django-storages==1.14.2
djangorestframework==3.14.0
drf-spectacular==0.26.4
drf-yasg==1.20.0
exceptiongroup==1.2.0
gunicorn==21.2.0
h11==0.14.0
idna==3.4
inflection==0.5.1
isodate==0.6.1
itypes==1.2.0
Jinja2==3.1.2
jsonschema==4.19.0
jsonschema-specifications==2023.7.1
Markdown==3.4.4
MarkupSafe==2.1.3
oauthlib==3.2.2
packaging==23.1
Pillow==10.0.0
psycopg2==2.9.7
pycparser==2.21
PyJWT==2.6.0
pyrsistent==0.19.3
python-dateutil==2.8.2
python3-openid==3.2.0
pytz==2023.3.post1
PyYAML==6.0.1
referencing==0.30.2
requests==2.31.0
requests-oauthlib==1.3.1
rpds-py==0.10.2
ruamel.yaml==0.17.32
ruamel.yaml.clib==0.2.7
six==1.16.0
sniffio==1.3.0
sqlparse==0.4.4
typing_extensions==4.7.1
tzdata==2023.3
uritemplate==4.1.1
urllib3==2.0.4
uvicorn==0.23.2
waitress==2.1.2
И часть файла settings.py существующего приложения:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'drf_yasg',
'corsheaders',
'rest_framework.authtoken',
'django_filters',
'welAdmin',
"accounts",
"core",
'drf_spectacular',
]
LOGOUT_REDIRECT_URL = "/"
ACCOUNT_LOGOUT_REDIRECT_URL = "/"
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'SWAGGER_SETTINGS': {
'LOGIN_URL': 'rest_framework:login',
'LOGOUT_URL': 'rest_framework:logout'
}
}
# Password validation
# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'CET'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_DIRS = [
(BASE_DIR, 'static')
]
STATICFILES_DIRS = [BASE_DIR / 'static']
STATIC_ROOT = BASE_DIR / 'staticfiles/'
MEDIA_ROOT = BASE_DIR / 'media'
admin.py выглядит так:
У меня также есть приложение для счетов. и admin.py выглядит следующим образом:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import Account
# Register your models here.
class AccountAdmin(UserAdmin):
list_display = (
"email",
"first_name",
"last_name",
"username",
"last_login",
"date_joined",
"is_active",
)
list_display_links = ("email", "first_name", "last_name")
filter_horizontal = ('groups', 'user_permissions',)
readonly_fields = ("last_login", "date_joined")
ordering = ("-date_joined",)
filter_horizontal = ()
list_filter = ()
fieldsets = ()
# Register your models here.
admin.site.register(Account, AccountAdmin)
# admin.site.register(Account, AccountAdmin)
Вопрос: Как показать разрешения выбранного пользователя в существующем приложении django?
Вы отменили filter_horizontal
с filter_horizontal = ()
, удалите эту строку:
class AccountAdmin(UserAdmin):
list_display = (
'email',
'first_name',
'last_name',
'username',
'last_login',
'date_joined',
'is_active',
)
list_display_links = ('email', 'first_name', 'last_name')
filter_horizontal = (
'groups',
'user_permissions',
)
readonly_fields = ('last_login', 'date_joined')
ordering = ('-date_joined',)
# filter_horizontal = () 🖘 remove
list_filter = ()
fieldsets = ()