from django.contrib.auth.models import User

def make_filepath(field_name, instance, filename):
    '''
        Produces a unique file path for the upload_to of a FileField.

        The produced path is of the form:
        "[model name]/[field name]/[random name].[filename extension]".
    '''
    new_filename = "%s.%s" % (User.objects.make_random_password(10),
                             filename.split('.')[-1])
    return '/'.join([instance.__class__.__name__.lower(),
                     field_name, new_filename])

...

from django.db import models
from functools import partial

# Example use on a model
class SomeModel(models.Model):
    ...
    image = models.ImageField(upload_to=partial(make_filepath, 'image'))
    ...