I need save without full path to file also filename. I doing so:
class Photo(models.Model):
photo = models.ImageField(upload_to = settings.PATH_PHOTOS_SOURCE)
user = models.ForeignKey(UserProfile, editable=False)
item = models.ForeignKey(Item, default=0)
filename = models.CharField(max_length=100, default='', editable=False)
def save(self, *args, **kwargs):
self.filename = os.path.basename(self.photo.url)
super(Photo, self).save(*args, **kwargs)
It's work, but exist cases, when file with existing name already exist, and offcourse in disk write file example_1.jpg, example_2.jpg, but in filename saving incorrect filename example.jpg
I changed my save method so:
def save(self, *args, **kwargs):
super(Photo, self).save(*args, **kwargs)
self.filename = os.path.basename(self.photo.url)
super(Photo, self).save()
It's work, but i don't like this code, maybe is more elegant code.
I tried to do this with signals, but i had problem with save recursion.