Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

542
Views
Django, ¿cómo cambiar el nombre de las imágenes usando una nueva numeración automática por clave externa?

Ok, ese título es probablemente tan vago como las cosas vagas pueden llegar a ser, pero no pude pensar en algo bueno. Déjame explicarte mi problema.

Para la explicación, usaré libros como ejemplo, solo porque es fácil. Entonces, imagina que tengo 2 modelos como este:

 class Book(models.Model): title = models.CharField(max_length=100) class BookImage(models.Model): book = models.ForeignKey(Book) image = models.ImageField() is_cover = models.BooleanField()

Ahora, como puede ver, un libro puede tener varias imágenes. Quiero cambiar el nombre de las imágenes cargadas a [título del libro]-[id-imagen].jpg (o cualquier extensión de imagen que haya, por supuesto). Sin embargo, quiero que la identificación de la imagen sea única por libro. Si eso tiene sentido.

Entonces, si tengo BookA, quiero que las imágenes se llamen BookA-1, BookA-2 y BookA-3, etc. Y BookB comienza nuevamente en 1, BookB-1, BookB-2, BookB3, etc.

¿Alguna idea de cómo puedo hacer esto? Lo he estado pensando yo mismo, pero no puedo encontrar una solución realmente buena. Al principio pensé que podría hacer un conteo de la cantidad de imágenes y agregarle 1, pero luego tendría problemas si elimina imágenes. También pensé en hacer un seguimiento de los identificadores en un modelo separado, pero eso suena demasiado 'complicado'. Y para empeorar las cosas, me gustaría cargar varias imágenes a la vez (bueno, la carga de imágenes está en línea en el administrador de Django), por lo que también tiene que poder funcionar con eso ... Entonces, estaba preguntando si alguien aquí tiene una buena idea? ¿Hay incluso una solución simple?

También he estado buscando en Google un poco, pero nadie ha tenido ningún problema con esto, o simplemente (bueno, probablemente) no puedo encontrar el término de búsqueda correcto (de la misma manera que no pude encontrar un título correcto :P).

¡Gracias por leer!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Primero, define una función para manejar la imagen cargada y pasa esto a su campo de imagen.

 def book_image_upload(instance, filename): book_title = instance.book.title instance_id = instance.id extension = filename.split(".")[-1] new_filename = "%s-%s.%s" %(book_title, instance_id,extension) new_filepath = "books/%s" %(new_filename) return new_filepath class BookImage(models.Model): book = models.ForeignKey(Book) image = models.ImageField(upload_to=book_image_upload) is_cover = models.BooleanField()
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!