2009/7/2 Andrew Turner <acturne...@gmail.com>:
> 2009/7/2 Andrew Turner <acturne...@gmail.com>:
>> Would it be possible to define the hashed filename in the save method,
>> and then pass it to the upload_to argument of the ImageField?
>
> In answer to my own question, this seems to work:-
>
> def get_path(instance, name):
>   return instance._my_filename
>
> class Photo(models.Model):
>   photo = models.ImageField(upload_to=get_path, blank=False)
>   ...
>   slug = models.CharField(max_length=16, unique=True)
>
>   def save(self):
>        name = hashlib.sha1(str(random.random())).hexdigest()[:16]
>        self._my_filename = '%s.jpg' % (name)
>        self.slug = name
>        super(Post, self).save()

Talking to myself again, I've changed the save method slightly:-

    def save(self):
        if not self.slug:
            name = hashlib.sha1(str(random.random())).hexdigest()[:16]
            self._my_filename = '%s.jpg' % (name)
            self.slug = name
        super(Post, self).save()

and added a blank=True to the slug field so that it only sets it on
the first save.

If there is a better way of doing all this, feel free to let me know.
If not, I hope this is of use to somebody.

Thanks for your pointers, Rajesh.

Cheers,
Andrew

--~--~---------~--~----~------------~-------~--~----~
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