Estoy tratando de configurar mis cargas para que, si el usuario Joe sube un archivo, vaya a MEDIA_ROOT / joe en lugar de que todos los archivos vayan a MEDIA_ROOT. El problema es que no sé cómo definir esto en el modelo. Así es como se ve actualmente:
class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')
Entonces, lo que quiero es en lugar de '.' como upload_to, que sea el nombre del usuario.
Entiendo que a partir de Django 1.0 puede definir su propia función para manejar upload_to, pero esa función tampoco tiene idea de quién será el usuario, así que estoy un poco perdido.
¡Gracias por la ayuda!
fuente
os.path.join
lugar de'/'.join
asegurarse de que también funcione en sistemas que no sean Unix. Pueden ser raros, pero es una buena práctica;)Esto realmente ayudó. Por un poco más de brevedad, decidí usar lambda en mi caso:
fuente
pk
antes de guardar. Solo funciona para actualizaciones, no creaciones (inserciones).migrations
operaciones porque no se puede serializar según los documentosUna nota sobre el uso del valor pk del objeto 'instancia'. De acuerdo con la documentación:
Por lo tanto, la validez de usar pk depende de cómo se defina su modelo particular.
fuente
Si tiene problemas con las migraciones, probablemente debería estar usando
@deconstructible
decorador.Uso:
fuente