Использование django-filebrowser и FileBrowserField
Я пытаюсь назначить параметр directory
на основе ключа в самой модели. Поэтому, используя пример блога, если бы я сохранял фотографии для разных сообщений, фотографии были бы в каталогах, названных в честь идентификатора блога. Так что, если MEDIA_ROOT
был /some/path/to/media/filebrowser_files/
Я хочу, чтобы динамически назначить directory
параметра Я быть MEDIA_ROOT+str(model_pk)
Django filebrowser, специфичный для модели параметр каталога для FileBrowserField
На данный момент я пытался сделать что-то похожее на следующее, но не понимаю, как получить идентификатор текущего объекта. (Исключение NoNotExist с «Без исключения») Я знаю, что ошибка существует в попытке использовать self.page, но я не знаю, как это сделать правильно. Может ли кто-нибудь дать представление о том, где моя логика ошибочна, и что я могу сделать, чтобы исправить это? Большое спасибо.
class PageImage(models.Model):
page = models.ForeignKey(Page)
page_photo = FileBrowseField("Image", max_length=200, blank=True, null=True)
def __init__(self, *args, **kwargs):
super(PageImage, self).__init__(*args, **kwargs)
path = settings.MEDIA_ROOT+'pages/unfiled/'
if self.page:
path = settings.MEDIA_ROOT+'pages/'+str(self.page)+'/'
if not os.path.exists(path):
os.makedirs(path)
self._meta.get_field_by_name("page_photo")[0].directory = path
Спасибо за ответ. Модель страницы не имеет ничего необычного. Проблема заключается в том, что я использую self, поскольку я могу удалить все, кроме вызова супер-init и печати (str (self.page)). Вот где я получаю исключение из DoNotExist, указав, что исключение не предоставлено. Никакого переопределения pk мною. – wilbbe01
Спасибо за обновленный ответ. Это, по крайней мере, заставляет меня делать то, что я пытаюсь, но я думаю, мне нужно переосмыслить, как я это делаю. Установка 'directory' не сильно влияет на сохранение, так как изображение уже загружено ... поэтому мне нужно будет перемещать изображения из того места, где они были загружены при сохранении. Управление файлами ... весело. Еще раз спасибо. – wilbbe01