Используя Djangos ImageField для загрузки изображения, переименуйте его в произвольное имя файла и создайте миниатюру - PullRequest
0 голосов
/ 11 февраля 2010

Слушайте, ребята, я написал простой метод загрузки своих фотографий

class Picture(models.Model):
    path = models.CharField(max_length=200)
    filename = models.CharField(max_length=200)
    car = models.ForeignKey('Car')
    thumb_path = models.CharField(max_length=200)
    created_on = models.DateField(auto_now_add=True)
    updated_on = models.DateField(auto_now=True)

    def save(self):
        if not self.id:
            thumb_size = 128, 128
            thumb_path = "assests/uploads/thumb"+self.filename
            t = Image.open(self.path)
            t.thumbnail(thumb_size,Image.ANTIALIAS)
            t.save(thumb_path, "JPEG")
        self.thumb_path = thumb_path
        super(Picture, self).save()

    def delete(self):
        os.unlink(self.thumb_path)
        os.unlink(self.path)
        super(Picture, self).delete()

Как видите, это не лучший метод, я хочу перейти к ImageField (), чтобы выполнить большую часть своей работы, но я все еще хочу гибкость для создания миниатюры и случайного имени файла.

мне нужно создать другую модель для PictureThumbnail? Я действительно не хочу использовать какие-либо расширения третьей части.

как я могу использовать ImageField, чтобы это работало? Все iamges должны быть загружены в / assests / uploads /

Спасибо

1 Ответ

1 голос
/ 11 февраля 2010

Вы можете использовать адаптированную версию:

http://www.djangosnippets.org/snippets/1100/

Или, в зависимости от того, что именно вам нужно сделать, вы можете рассмотреть подход, основанный на шаблонном фильтре, примерно так:

http://www.djangosnippets.org/snippets/1887/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...