¿Hay alguna posibilidad de cambiar la lista de permisos en la página de edición del usuario? No deseo mostrar todos los permisos, por ejemplo, la entrada del registro de administración o el grupo de autenticación, etc. ¿Cómo puedo modificar un conjunto de preguntas principal para excluir parte de él?Administrador de Django - cambiar la lista de permisos
Respuesta
Recibí la idea de this topic, que también responde a su pregunta, pero no está tan claro.
Tiene que sobrescribir el conjunto de consulta de permisos de usuario en el formulario UserAdmin utilizado para la visualización.
Para ello, la manera más fácil es crear una subclase de UserAdmin y sobrescribir el get_form
método:
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
class MyUserAdmin(UserAdmin):
def get_form(self, request, obj=None, **kwargs):
# Get form from original UserAdmin.
form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
if 'user_permissions' in form.base_fields:
permissions = form.base_fields['user_permissions']
permissions.queryset = permissions.queryset.filter(content_type__name='log entry')
return form
Puede cambiar el filtro del conjunto de consultas para lo que quiera: Ejemplos:
# Exclude admin and auth.
permissions.queryset = permissions.queryset.exclude(content_type__app_label__in=['admin', 'auth'])
# Only view permissions of desired models (Can be your models or Django's)
permissions.queryset = permissions.queryset.filter(content_type__model__in=['blog', 'post', 'user', 'group'])
Después de crear su clase, se tiene que registrar su modelo de usuario junto con el administrador de nueva creación:
admin.site.unregister(User) # You must unregister first
admin.site.register(User, MyUserAdmin)
Editar: He añadido el comentario de Maik Hoepfel, porque este código hizo que django se bloqueara al crear un nuevo usuario.
Puede hacer lo mismo con la lista de permisos en su página de edición de grupo, pero hay que crear otra administración que se extiende desde GroupAdmin, y cambiar form.base_fields['user_permissions']
con form.base_fields['permissions']
respuesta de Renato es casi perfecta. El administrador de Django hace que agregar a un usuario un proceso de dos pasos con el mismo formulario, y su código falla con un error de clave para 'user_permissions' en el primer paso.
La solución es bastante fácil, sólo tiene que utilizar el código de abajo en su lugar:
def get_form(self, request, obj=None, **kwargs):
form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
# adding a User via the Admin doesn't include the permissions at first
if 'user_permissions' in form.base_fields:
permissions = form.base_fields['user_permissions']
permissions.queryset = permissions.queryset.filter(content_type__name='log entry')
return form
- 1. Adición de permisos por objeto django administrador
- 2. Cambiar User ModelAdmin para administrador de Django
- 3. claves externas de visualización de la lista Django administrador
- 4. Django administrador vista de lista Personalizar Nombre de la columna
- 5. Django permisos
- 6. permisos de usuario Django Inlines + ver - Permisos emite
- 7. ¿Cómo solicitas permisos de administrador usando NSIS?
- 8. Django - ¿permisos de usuario para ciertas vistas?
- 9. Django - Django reglas de comparación de permisos Django y utilizando
- 10. Django Administrador de encadenamiento
- 11. Recuperar lista de permisos
- 12. Reutilización Django Lista de cambios Fuera del administrador del sitio
- 13. Django administrador list_display short_description
- 14. ¿Cómo evito la escalada de permisos en el administrador de Django cuando otorgo el permiso de "cambio de usuario"?
- 15. ¿Cómo se llama el widget utilizado para asignar permisos de usuario en el administrador de Django?
- 16. Django admin Lista de la lista + ForeignKey = Vaciar Cambiar la lista
- 17. Administrador de Django Selecciones desplegables
- 18. accesorios Django para permisos
- 19. cambiar lista mostrar enlace en django admin
- 20. Django - Administrador: list_display TextField
- 21. La adición de nuevos permisos personalizados en Django
- 22. ¿Es difícil personalizar el administrador de Django?
- 23. Permisos del elemento de la lista de SharePoint
- 24. permisos de nivel de objeto django
- 25. Campo de elección de administrador de Django
- 26. Django: Mostrar imagen en la interfaz de administrador
- 27. Django - Usuario, Perfil de usuario y Administrador
- 28. ¿Cómo solicitar permisos de administrador cuando se inicia el programa?
- 29. Actividad de registro en el administrador de Django - Django
- 30. ¿Cuándo crear programáticamente permisos personalizados de Django?