Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 8, 2010 14:28:03

Naota
От:
Зарегистрирован: 2007-06-04
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение файла

Хочу провернуть такое дело. В upload_to вбить путь с id объекта. Но когда объект первый раз сохраняется, этот id в None, и получается фигня. По этому я написал следующий фокус:

from django.db.models import FileField as DjFileField

class FileField(DjFileField):

# блокирую сохранение
def pre_save(self, model_instance, add):
return getattr(model_instance, self.attname)

# генератор пути к файлу
def generate_filename(self, instance, filename):
return os.path.join(self.upload_to,
str(instance.id),
self.get_filename(filename))

class ItemImage(models.Model):
file = ImageField(upload_to="uploads")

def save(self, *args, **kwargs):
super(ItemImage, self).save(*args, **kwargs)
if self.file:
# генерирую имя и повторно сохраняю
self.file.name = self.file.field.generate_filename(self, self.file.name)
self.file.save(self.file.name, self.file, save=False)
ItemImage.objects.filter(id=self.id).update(file=self.file)
Жуткова-то получается. Как бы это сделали вы?



Отредактировано (Июнь 8, 2010 15:43:03)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version