Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

543
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda