I forgot to mention that i have imported models like this: import django.db.models as m
This should explain the first two lines. On Mon, Sep 5, 2011 at 12:28 PM, Stratos Moros <[email protected]> wrote: > Hello, > > I have a model that includes a FileField. When the user uploads a file > via the admin interface, I want the file to be saved as 'upload_to/ > primary_key/original_filename'. Since the object will not be saved in > the database when the user uploads the file, it will not have a > primary key at that point. This is my workaround: > > > class Decision(m.Model): > ... > decision = m.FileField(upload_to='base_dir/') > ... > > def save(self, *args, **kwargs): > """ custom save to use pk on filename """ > #save once to get a pk > super(Decision, self).save(*args, **kwargs) > > #get info about the file > uploaded = self.decision > old_path = self.decision.name > basedir, filename = os.path.split(old_path) > new_path = os.path.join(basedir, str(self.pk), filename) > > #create the new file, delete the one django created > uploaded.storage.save(new_path, uploaded) > uploaded.storage.delete(old_path) > > #assign new path and save again > self.decision = new_path > super(Decision, self).save(*args, **kwargs) > > > This works, but seems to be a bit on the hacky side. Basically, I'm > letting FileField upload the file to the 'upload_to' path and then > move it to its correct path when the object has a primary key. > > I was wondering if there is a better way to do this. Are there any > cases where my code wouldn't work? > > Thanks. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

