Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » upload_to ImageField как удалять рисунок рагруженный ранее [RSS Feed]

#1 Авг. 11, 2009 20:39:27

ivanff
От:
Зарегистрирован: 2008-10-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

upload_to ImageField как удалять рисунок рагруженный ранее

при изменении сохраненной модели в админке (change_form), выбирается новая картинка, загружается путь к ней в БД(естественно обновляется), в директорию upload_to добавляется новая картинка, а старая остается на том же месте, как ее автоматом удалять?

пробовал переопределять метод save в описании модели, если в ручную добавить os.revome(path+<предыдущее имя файла >) то отрабатывает нормально, но как получить <предыдущее имя файла >, я не знаю.

Хелп бьюсь уже пипец сколько, глаза уже в моник не смотрят :(



Отредактировано (Авг. 12, 2009 08:44:14)

Офлайн

#2 Авг. 12, 2009 16:01:52

ivanff
От:
Зарегистрирован: 2008-10-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

upload_to ImageField как удалять рисунок рагруженный ранее

Вот собственно, человек один подсказал, другом форуме. http://softwaremaniacs.org/forum/django/14158/?page=last#75070

def upload_images(instance, filename):
filename = unique_filename(filename)
return 'media/%s/%s' % (instance._meta.db_table, filename)
def upload_small_images_old(instance, filename):
basename, format = filename.rsplit('.', 1)
return 'media/%s/%s_small.%s' % (instance._meta.db_table, basename, format)
def upload_small_images(instance, filename):
filename = unique_filename(filename)
basename, format = filename.rsplit('.', 1)
return 'media/%s/%s_small.%s' % (instance._meta.db_table, basename, format)

class Chapter(models.Model):
title = models.CharField(max_length=255)
image_id = models.ImageField(upload_to=upload_images)
small_image_id = models.ImageField(upload_to=upload_small_images)
is_published = models.IntegerField(max_length=1, default=0)
node = models.ForeignKey(Node)
def save(self, force_insert=False, force_update=False):
if self.pk:
try:
old_obj = self.__class__.objects.get(pk=self.pk)
if old_obj.image_id.path != self.image_id.path:
path = old_obj.image_id.path
filename = basename(path)
default_storage.delete(path)
default_storage.delete(upload_small_images_old(self, filename))
except self.__class__.DoesNotExist:
pass
super(Chapter, self).save(force_insert=False, force_update=False)
if force_insert and force_update:
raise ValueError("Cannot force both insert and updating in "
"model saving.")
new_path = self.image_id.path
new_filename = basename(new_path)
self.small_image_id = upload_small_images_old(self, new_filename)
self.save_base(force_insert=force_insert, force_update=force_update)
thumbnail(new_path)
def __unicode__(self):
return '<id>:%s; <title>:%s' % (self.id, self.title)
def get_absolute_url(self):
return '/%s/%i/' % (self.node.identifier, self.id)
class Meta:
db_table = 'chapter'
verbose_name = 'Chapter'
verbose_name_plural = 'Chapters'



Отредактировано (Авг. 12, 2009 16:04:02)

Офлайн

  • Начало
  • » Django
  • » upload_to ImageField как удалять рисунок рагруженный ранее[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version