ok don't know what typo I made yesterday but it works now, maybe
backslash in path. Thanks.

for you who want to know how:

def get_path(instance, filename):
    return instance._folder

My model:
class File(models.Model):
    type = models.CharField(max_length=10)
    the_file = models.FileField(upload_to=get_path)
def __unicode__(self):
        return self.file.name
def save(self, force_insert=False, force_update=False):
        self._folder = "new_folder/"+self.the_file.name
        super(File, self).save(force_insert, force_update)


On 4 Aug, 22:02, Daniel Roseman <dan...@roseman.org.uk> wrote:
> On Aug 4, 8:53 pm, caliman <stefanhjel...@gmail.com> wrote:
>
>
>
> > Hi!
>
> > I'm trying to change upload_to dynamically.
>
> > My model:
> > class File(models.Model):
> >     type = models.CharField(max_length=10)
> >     the_file = models.FileField(upload_to="folder")
> > def __unicode__(self):
> >         return self.file.name
>
> > Tried following:
>
> > 1, overwrite upload_to in save:
> > def save(self, force_insert=False, force_update=False):
> >         the_file.upload = "new_folder"
> >         super(File, self).save(force_insert, force_update)
>
> > This gives:
> > Exception Type:         NameError
> > Exception Value:        global name 'the_file' is not defined
>
> > Also tried with slug fields and setting a function and set value in
> > runtime with:
> > the_file = models.FileField(upload_to=get_path)
>
> > that works great if I just want to change the filename but I can't
> > change folder.
>
> > So what am I doing wrong?
>
> > Stefan
>
> Alex has given you the answer regarding why you're getting that
> exception, but even when you've fixed that it won't do what you want -
> by then it's far too late, the file has already been uploaded.
>
> Your second approach is the right one, making upload_to a function -
> as explained in the 
> documentation:http://docs.djangoproject.com/en/dev/ref/models/fields/#filefield
> But I don't understand why you say you can't change the folder there.
> On the contrary, you can return a complete file path from your
> upload_to function and that will be used as the file location. What
> happens when you try?
> --
> DR
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to