La documentación de los comandos de administración de Django muestra todos los comandos que se están creando en una carpeta de aplicaciones/administración/comandos. ¿Es posible poner comandos en subcarpetas, como app/management/commands/install y app/management/commands/maintenance? ¿Cómo se haría esto?Django: dividir los comandos de administración en las subcarpetas
Respuesta
Desafortunadamente, a partir de Django 1.4 no parece haber forma de hacerlo. Las fuentes para django.core.management.__init__.py
tienen este método:
def find_commands(management_dir):
"""
Given a path to a management directory, returns a list of all the command
names that are available.
Returns an empty list if no commands are defined.
"""
command_dir = os.path.join(management_dir, 'commands')
try:
return [f[:-3] for f in os.listdir(command_dir)
if not f.startswith('_') and f.endswith('.py')]
except OSError:
return []
Como se puede ver, sólo considera los archivos directamente dentro de la carpeta commands
, haciendo caso omiso de todas las subcarpetas. Sin embargo, si "parche mono" esta función alguna manera, el resto del código debería funcionar bien, ya que el código que realmente crea la instancia Command
es la siguiente:
def load_command_class(app_name, name):
"""
Given a command name and an application name, returns the Command
class instance. All errors raised by the import process
(ImportError, AttributeError) are allowed to propagate.
"""
module = import_module('%s.management.commands.%s' % (app_name, name))
return module.Command()
lo tanto, si usted tenía un comando llamado subfolder.command
se cargaría la secuencia de comandos correcta y crearía una instancia de la clase correcta.
Desde un punto de vista práctico, sin embargo, no veo el uso de hacer eso. Claro, tener comandos de "espacio de nombres" sería agradable, pero siempre puedes prefijar todos tus comandos con algún nombre si lo deseas, usando algo más como separador (como _
). La longitud del nombre del comando - y el número de teclas necesarias para escribirlos en el terminal - será la misma ...
- 1. Registro Django de comandos de administración personalizados
- 2. cómo modificar las opciones en las páginas de administración - Django
- 3. ¿Hay algún otro propósito para la carpeta de administración en Django aparte de los comandos?
- 4. Cómo forzar el informe de errores desde los comandos de administración de django?
- 5. Git ignora las subcarpetas
- 6. campos dinámicos en Django administración
- 7. filtros teniendo en Django administración
- 8. Django: utilizando ForeignKeyRawIdWidget fuera de los formularios de administración
- 9. Django administración ManyToManyField
- 10. ¿Cómo puedo desactivar los módulos de administración de Django Apio?
- 11. Restaurar htacces para las subcarpetas
- 12. decirle a Django a buscar en las subcarpetas plantilla de aplicaciones
- 13. cómo utilizar can_add_related en Django administración
- 14. filtro de lista de administración de Django
- 15. enumerar las subcarpetas en una carpeta - Matlab (solo subcarpetas, no archivos)
- 16. contrib.staticfiles y medios de administración Django
- 17. personalizar el panel de administración de django?
- 18. Viendo el model's__unicode__ de administración de Django
- 19. Comando de administración personalizada de Django con Scrapy: ¿Cómo incluir las opciones de Scrapy?
- 20. Página de administración de Django no encontrada
- 21. Utilización de administración se rompe la costumbre de los usuarios cambian de forma contraseña en administración de Django
- 22. Mostrar filas secundarias en la interfaz de administración de Django
- 23. auto-poblar con Django sitio de administración
- 24. línea Django de administración para ManyToMany recursiva
- 25. Administración de archivos estáticos para múltiples aplicaciones en Django
- 26. Las subcarpetas Zip que usan ZipOutputStream
- 27. ¿Es posible dividir las secuencias de comandos de usuario de Greasemonkey en varios archivos?
- 28. Cómo anulo help_text en la interfaz de administración de django
- 29. Administración de memoria/montón en las DLL
- 30. Seleccionar un elemento en Django de administración en línea con los botones de radio
¿Puede dar más detalles sobre su problema? es lo que estás buscando? https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – Marat
Me gustaría poner comandos en las subcarpetas de la aplicación/gestión/comandos. He agregado más detalles a la pregunta. –