Hello,
I am using the latest svn-revision 9244 and tried to use a callable in the upload_to parameter of my ImageField.
The explanation in the django-docs for the instance-parameter of acallable says the following:
An instance of the model where the FileField is defined. More specifically, this is the particular instance where the current file is being attached.
If I understand this right, I have access to all the input data of this instance (excepting the id). If I have the following models.py
01: from django.db import models
02:
03: def get_storage_path(instance, filename):
04: import os.path
05: print "instance: %s" % (instance)
06: print "desc: %s" % (instance.desc)
07: return os.path.join('uploads', filename)
08:
09: class ImageModel(models.Model):
10: image = models.ImageField('image', upload_to=get_storage_path)
11: desc = models.CharField(max_length=100)
12:
13: def __unicode__(self):
14: return u'%s - %s' % (self.image, self.desc)
the print statement in line 6 should print all the data I inserted into this variable in the admin. Is that right? In my case this is always a empty string:
[20/Oct/2008 21:52:47] "GET /admin/hp/imagemodel/add/ HTTP/1.1" 2002822
[20/Oct/2008 21:52:47] "GET /admin/jsi18n/ HTTP/1.1" 200 1915
instance: -
desc:
[20/Oct/2008 21:52:54] "POST /admin/hp/imagemodel/add/ HTTP/1.1" 302 0
[20/Oct/2008 21:52:54] "GET /admin/hp/imagemodel/ HTTP/1.1" 200 1866
But this is only true if I change the order of the two fields in my model. It seems that the order in the model is important for this behavior. But in my production case I subclass a model of an reusable app (photologue) and so I have no impact for the right order of my fields!
I tend to think it's a bug and file-type fields should be saved after non-file fields.