Comandos personalizados de administración de Django: pasar una lista de cadenas a argumentos

Tengo una lista de cadenas que me gustaría pasar a argumentos en mi comando personalizado de django.

list = ['abc', 'def', 'ghi', etc...]

¿Cómo puedo hacer esto desde una función de python?

management.call_command('commandname', args, options) 

Me cansé de pasar mi lista de argumentos:

[1] directamente:

    management.call_command('commandname', list)

y

[2] como un bucle:

    management.call_command('commandname', (abc for abc in list))

pero ambos fallaron después de ingresar el comando personalizado

preguntado el 22 de mayo de 12 a las 07:05

1 Respuestas

El método call_command está usando Lista de argumentos arbitrarios para argumentos de comando.

Entonces, necesitas usar:

list = ['abc', 'def', 'ghi']
management.call_command('commandname', *list)

Que es lo mismo que:

management.call_command('commandname', 'abc', 'def', 'ghi')

Información relacionada a los pagos por adelantado del CTC:

contestado el 23 de mayo de 17 a las 13:05

¿Puede dar un ejemplo usando lo que he especificado anteriormente? Lo siento, esto no es muy útil sin un ejemplo. - serpientes

Solo llámalo así: management.call_command('commandname', 'abc', 'def', 'ghi') - Reinout van Rees

@arie - Gracias. Eso fue muy útil. - serpientes

Hay un max número de argumentos para un comando django? Tengo una lista de 500 argumentos y se bloquea al final. Una prueba con 10 argumentos funcionó perfectamente. - serpientes

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.