2012-04-26 1 views
0

В моем проекте у меня есть приложение со школьной моделью и моделью школьного обучения.django изменить местоположение файла изображения с помощью setattr

Модель школа имеет поля для различных изображений, такие как логотип, печать и т.д.:

seal_image = models.ImageField(upload_to="sealimgs", null=True, blank=True) 
logo_image = models.ImageField(upload_to="logos", null=True, blank=True) 

Модель schoolsuggestion имеет поле для того, что соответствующее поле школы и поля изображения.

field_name = models.CharField(max_length=255, default="") 
image_field = models.ImageField(upload_to='img', null=True, blank=True) 

Когда школа предложение будет одобрен, я переписал сохранить так, что он получит поле ассоциированных школ через GetAttr (поле_формы) и установить его с SetAttr (field_name, image_field) (я упрощающий синтаксис, но вы получаете идею).

Проблема в том, что файл по-прежнему сохраняется в img, предположительно потому, что я использую setattr, а не специальное поле для сохранения изображения, которое вывело бы его в правильный каталог.

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

ответ

1

Я изменил загрузку в эту функцию и включить его в файле выше класс DEF:

def get_upload_to(instance, filename): 
    return School._meta.get_field(instance.field_name).upload_to+"/"+filename 
+0

Так что ваша проблема в том, как получить доступ к модели поля вместо значения поля экземпляра экземпляра, не так ли? – okm

+1

Если это так, ваше решение в порядке. Также используйте 'os.path.join' для конкатенации пути. – okm

Смежные вопросы