Subiendo múltiples imágenes en el administrador de Django.

Actualmente estoy creando un sitio de cartera para un cliente, y estoy teniendo problemas con un área pequeña. Quiero poder cargar múltiples imágenes (número variable) en línea para cada elemento de la cartera, y no puedo ver una forma obvia de hacerlo.

La forma más fácil de usar que puedo ver sería un formulario de carga de archivos con un control de JavaScript que le permita al usuario agregar más campos según sea necesario. ¿Alguien ha tenido alguna experiencia con un problema como este? De hecho, ¿hay bibliotecas personalizadas por ahí que puedan resolver mi problema?

He tenido poca necesidad de modificar la herramienta de administración antes de ahora, así que realmente no sé por dónde empezar.

Gracias a cualquiera que pueda arrojar algo de luz.

Puedes extender la interfaz de administración con bastante facilidad usando Javascript. Hay un buen artículo sobre hacer exactamente lo que quieres con un poco de magia jQuery.

Solo tendría que lanzar todo su código en un archivo Javascript e incluir lo siguiente en su admin.py:

class Photo(admin.ModelAdmin): class Media: js = ('jquery.js', 'inlines.js',) 

En cuanto a su fuente, también tendría que agregar dinámicamente el enlace para agregar más inlines usando Javascript, pero eso es bastante fácil de hacer:

 $(document).ready(function(){ // Note the name passed in is the model's name, all lower case $('div.last-related').after(' 

Probablemente necesites hacer un poco de estilo para que todo se vea bien, pero eso te ayudará a comenzar en la dirección correcta.

Además, ya que estás en tierra en inline , revisa el fragmento de ordenación en línea .

photologue es una aplicación de fotos rica en características para django. por ejemplo, le permite cargar galerías como archivos zip (lo que en cierto sentido significa cargar varios archivos a la vez), crea automáticamente miniaturas de diferentes tamaños personalizados y puede aplicar efectos a las imágenes. Lo usé una vez en un proyecto y la integración no fue demasiado difícil.