Estou tentando configurar meus envios para que, se o usuário joe carregue um arquivo, ele vá para MEDIA_ROOT / joe, em vez de fazer com que todos os arquivos sejam acessados em MEDIA_ROOT. O problema é que não sei como definir isso no modelo. Aqui está como está atualmente:
class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')
Então, o que eu quero é em vez de '.' como upload_to, seja o nome do usuário.
Eu entendo que a partir do Django 1.0 você pode definir sua própria função para lidar com o upload_to, mas essa função não tem idéia de quem será o usuário, então estou um pouco perdido.
Obrigado pela ajuda!
fonte
os.path.join
vez de'/'.join
garantir que ele também funcione em sistemas não-Unix. Eles podem ser raros, mas é uma boa prática;)Isso realmente ajudou. Por um pouco mais de brevidade, decidi usar lambda no meu caso:
fonte
pk
antes de salvar. Funciona apenas para atualizações, não para criações (inserções).migrations
operações porque ele não pode ser serializado de acordo com os docsUma observação sobre o uso do valor pk do objeto 'instance'. De acordo com a documentação:
Portanto, a validade do uso de pk depende de como seu modelo específico é definido.
fonte
Se você tiver problemas com migrações, provavelmente deve usar o
@deconstructible
decorador.Uso:
fonte