Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] upload_to="fotos/%Y/%m/%d"

Olá! Quando uso o codigo :

foto = models.ImageField(upload_to="fotos/%Y/%m/%d", blank=True)

Entre todos os diretórios que são criados, um deles é o "fotos", existe um modo que esse diretório ao inves de se chamar "fotos" ele tenha o nome do objeto ? Tentei usar self.nome de varias formas e não consegui.

1 resposta
solução!

Infelizmente, o Django não permite que você utilize o nome do objeto diretamente nesse caso.

No entanto, você pode utilizar uma função para personalizar o caminho do upload. Por exemplo, você pode criar uma função chamada get_upload_path que recebe o objeto e o nome do arquivo e retorna o caminho desejado. Veja um exemplo:

import os

def get_upload_path(instance, filename):
    # Obtém o nome do objeto
    nome_objeto = instance.nome
    # Obtém a extensão do arquivo
    extensao = os.path.splitext(filename)[1]
    # Monta o caminho completo
    caminho = f"fotos/{nome_objeto}/{filename}{extensao}"
    return caminho

class SeuModel(models.Model):
    nome = models.CharField(max_length=100)
    foto = models.ImageField(upload_to=get_upload_path, blank=True)

Dessa forma, o caminho do upload será personalizado com o nome do objeto. Por exemplo, se o objeto tiver o nome "objeto1" e o arquivo for "foto.jpg", o caminho do upload será "fotos/objeto1/foto.jpg".