2015-10-14 2 views
1

J'ai 2 modèles voitures et profils:comment spécifier un répertoire et une fonction avec upload_to dans django

class Car(models.Model): 
    name = models.CharField(max_length=200) 
    image_file = models.ImageField(upload_to=naming, null=True, blank=True) 

class Profile(models.Model): 
    name = models.CharField(max_length=200) 
    image_file = models.ImageField(upload_to='profiles', null=True, blank=True) 

J'ai besoin de la fonction de nommage, mais je veux aussi les fichiers téléchargés pour être dans les voitures de dossier au lieu de juste dans le répertoire des médias.

Est-il possible de les télécharger dans ce dossier ET appeler cette fonction? Dans le doc je ne pouvais trouver un sens mais pas les deux.

Merci d'avance!

Répondre

1

Je ne comprends pas ce que vous voulez dire & appelez la fonction en même temps, mais la fonction est en effet appelée, sinon il ne produira pas de chemins. Pour votre première question, vous pouvez effectuer les tâches suivantes:

def naming(instance, file_name):             
    model_name = instance.__class__.__name__ 
    return os.path.join(model_name, file_name) 
+0

Actuellement, les photos je télécharger des profils seront enregistrés dans 'médias/profiles' les images que je télécharger dans les voitures seront téléchargées sur' media' mais je veux qu'il ait dans 'media/cars'. Si j'utilise le vôtre, il est stocké comme ça mais ce n'est pas dans la base de données. Si je fais 'print instance.image_file.path' je vois encore l'ancienne structure de dossier '/ media/myfile.png' – Tom

+0

fonctionne, j'étais trop bête! – Tom