Используя django-filebrowser и FileBrowserField
, я пытаюсь назначить параметр directory
на основе ключа в самой модели. Итак, используя пример блога, если бы я сохранял фотографии для разных сообщений, фотографии были бы в каталогах, названных в честь идентификатора блога. Итак, если MEDIA_ROOT
было/some/path/to/media/filebrowser_files/
, я хочу динамически назначить параметру directory
значение MEDIA_ROOT+str(model_pk)
.
На данный момент я попытался сделать что-то вроде следующего, но не понимаю, как получить идентификатор текущего объекта. (Исключение DoesNotExist с «Исключение не предоставлено») Я знаю, что ошибка существует при попытке использовать 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