заменить файл, связанный с полем изображения, не копируя его в django - PullRequest
5 голосов
/ 27 января 2011

У меня есть пользовательский профиль вида

class profile():
  #the next line is just an abstract
  profile_images='volumes/media/root/userprofile/profile_images/'
  image=models.ImageField(upload_to=profile_images)

. В каталоге "profile_images" находятся последние 5 файлов, загруженных пользователем в качестве изображений профиля, например:

image_1
image_2
image_3
image_4
image_5

позволяетскажем текущий профиль.изображение image_1.Теперь я хочу позволить пользователю выбрать одно из предыдущих изображений.функция, которую я написал, чтобы изменить изображение на изображение, полученное из формы, выглядит следующим образом:

def change_profile_image(userprofile,path_to_new_image):
  f = open(path_to_new_image, 'r')
  userprofile.image = ImageFile(f)
  userprofile.save()

в качестве примера пользователь выбирает image_3, и после выполнения этого кода вышеупомянутый каталог выглядит так:

image_1
image_2
image_3
image_4
image_5
volumes/media/root/userprofile/profile_images/image_3

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

Ответы [ 2 ]

5 голосов
/ 27 января 2011

хорошо, на самом деле это так же просто, как

userprofile.image=path_to_new_image

Не нужно беспокоиться об открытии файлов, их удалении и перезаписи.

1 голос
/ 27 января 2011

Теоретически вы можете перезаписать userprofile.image.path, но не совсем понятно, как это сделать.

Вот еще немного информации.

Программно сохраняйте изображение в DjangoImageField

Django: Как заменить / перезаписать / обновить / изменить файл FileField?

Как заменить / переопределить загруженный файл

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