J'essaie de configurer mes téléchargements de sorte que si l'utilisateur joe télécharge un fichier, il aille dans MEDIA_ROOT / joe au lieu d'avoir les fichiers de tout le monde dans MEDIA_ROOT. Le problème est que je ne sais pas comment définir cela dans le modèle. Voici à quoi il ressemble actuellement:
class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')
Donc, ce que je veux, c'est au lieu de "." comme upload_to, que ce soit le nom de l'utilisateur.
Je comprends qu'à partir de Django 1.0, vous pouvez définir votre propre fonction pour gérer le upload_to mais cette fonction n'a aucune idée de qui sera l'utilisateur non plus, donc je suis un peu perdu.
Merci pour l'aide!
la source
os.path.join
au lieu de'/'.join
pour vous assurer qu'il fonctionne également sur les systèmes non-Unix. Ils peuvent être rares, mais c'est une bonne pratique;)Cela a vraiment aidé. Pour un peu plus de brièveté, j'ai décidé d'utiliser lambda dans mon cas:
la source
pk
sauvegarde avant. Cela ne fonctionne que pour les mises à jour et non pour les créations (inserts).migrations
opérations car il ne peut pas être sérialisé selon la documentationUne note sur l'utilisation de la valeur pk de l'objet 'instance'. Selon la documentation:
Par conséquent, la validité de l'utilisation de pk dépend de la manière dont votre modèle particulier est défini.
la source
Si vous rencontrez des problèmes de migration, vous devriez probablement utiliser
@deconstructible
Decorator.Usage:
la source