Найти - Пользователи
Полная версия: upload_to ImageField как удалять рисунок рагруженный ранее
Начало » Django » upload_to ImageField как удалять рисунок рагруженный ранее
1
ivanff
при изменении сохраненной модели в админке (change_form), выбирается новая картинка, загружается путь к ней в БД(естественно обновляется), в директорию upload_to добавляется новая картинка, а старая остается на том же месте, как ее автоматом удалять?

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

Хелп бьюсь уже пипец сколько, глаза уже в моник не смотрят :(
ivanff
Вот собственно, человек один подсказал, другом форуме. 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'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB