питон, джанго: копия изображения - PullRequest
2 голосов
/ 24 октября 2010

Я создал эту функцию, чтобы скопировать изображение из django-модели в другую django-модель. Изображение должно быть сохранено с избыточностью:

def __copy_file__(from_object,to_object,field):
    attr = field.attname
    try:
        newpath = getattr(from_object,attr).path
        dot_at = newpath.rfind(".")
        while os.path.exists(newpath):
            newpath = newpath[:dot_at] + "_" + newpath[dot_at:]
        shutil.copyfile(getattr(from_object,attr).path, newpath)
        getattr(to_object,attr).save(newpath, File(open(getattr(from_object,attr).path)))
        return True
    except ValueError:
        return False

Но эта функция создает какие-то недопустимые файлы ... Я помню, что однажды это сработало, но я проверил сегодня и больше не работает.

Редактировать: Теперь я знаю, что функция производит два изображения. Тот, который работает, а другой нет. Строка shutil.copyfile (etc) выдает рабочую, а в присваивании getattr(to_object,attr).save (etc) изображение снова сохраняется. Так что это проблема. Он должен быть назначен, а не скопирован снова.

Кто-нибудь может мне помочь? :)

1 Ответ

3 голосов
/ 06 января 2012

так, как я делаю, при условии from_model и to_model для моделей с изображениями ImageField:

def copy_image(from_model, to_model):
    to_model.image.save(from_model.image.url.split('/')[-1],from_model.image.file,save=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...