title: upload_to value changes photo.name attribute
body: <p>Why is it that <code>upload_to</code> value changes the value of <code>photo.name</code>? I am trying to create a album directory during runtime and story my image within the appropriate album directory. My code is able to create a directory with the appropriate album name and has the correct photo in it but it changes <code>self.photo.name</code> to the <code>upload_to</code> value. </p>
  
  <p>In the picture below. With the admin interface, I create an album called <code>test4</code> and I choose to upload <code>tumblr_nh09woLkmb1sfie3io1_1289.jpg</code>. <code>self.photo.name</code> will have the value of <code>test4/tumblr_nh09woLkmb1sfie3io1_1289.jpg</code>. </p>
  
  <p>In my <code>upload_path</code> method I also tried </p>
  
  <pre><code>   return instance.album.title
     return '/' + instance.album.title
     return instance.album.title + '/'
  </code></pre>
  
  <p>this would NOT create a directory with the name of <code>instance.album.title</code> but instead save within my <code>MEDIA_ROOT</code> the file with the name of what the <code>upload_path</code> method returns. NOT the actual file name.</p>
  
  <p>I feel as though the expected self.photo.name should be the name of the photo uploaded. In this case <code>tumblr_nh09woLkmb1sfie3io1_1289.jpg</code></p>
  
  <p><img src="https://i.stack.imgur.com/89hBw.png" alt="enter image description here"></p>
  
  <pre><code>from django.db import models
  from django.contrib import admin
  from PIL import Image
  from django.conf import settings
  import os.path
  from django.utils.html import format_html
  from django.core.files.storage import FileSystemStorage
  import re
  
  
  class Album(models.Model):
      title = models.CharField(max_length=50, unique=True)
  
      def __str__(self):
          return self.title
  
      def images(self):
          lst = [x.photo for x in self.photo_set.all()]
          return lst
  
      def save(self, *args, **kwargs):
          # super(Album, self).save(*args, **kwargs)
          rgx = re.search(r'.*\w', self.title)
          self.title = rgx.group(0).replace(" ", "_")
          super(Album, self).save(*args, **kwargs)
  
  class AlbumAdmin(admin.ModelAdmin):
      search_fields = ["title"]
      list_display = ["images"]
  
  def upload_path(instance, filename):
      if " " in instance.album.title:
          instance.album.title.replace(" ", "_")
      return '/'.join([instance.album.title, filename])
  
  class Photo(models.Model):
      title = models.CharField(max_length=50, blank=True)
      album = models.ForeignKey(Album)
      photo = models.ImageField(upload_to=upload_path)
      upload = models.DateTimeField(auto_now_add=True)
  
      def __str__(self):
          return self.title
  
      def size(self):
          return "%s x %s" % (self.photo.width, self.photo.height)
  
      def thumbnail(self):
          thumbnail_html = "&lt;a href=\"{0}{1}\"&gt;&lt;img border=\"0\" alt=\"\" src=\"{2}{3}\" height=\"40\" /&gt;&lt;/a&gt;".format(settings.MEDIA_URL, self.photo.name, settings.MEDIA_URL, self.photo.name)
          print settings.MEDIA_URL, settings.MEDIA_ROOT
          return thumbnail_html
  
      thumbnail.allow_tags = True
  
  class PhotoAdmin(admin.ModelAdmin):
      search_fields = ["title", "photo"]
      list_display = ["photo", "thumbnail", "title", "album", "size"]
      list_filter = ["album"]
  </code></pre>