Django的filebrowser,为FileBrowserField模型特定目录参数(Djang

2019-09-28 21:51发布

使用Django-filebrowser和FileBrowserField我试图指定directory基于关闭模式本身是一个关键参数。 因此,使用一个博客例如,如果要我节约了不同岗位的照片,这些照片将在博客ID命名的目录。 因此,如果MEDIA_ROOT/some/path/to/media/filebrowser_files/我想动态分配的directory参数设置为是MEDIA_ROOT+str(model_pk)

在这一点上我试图做类似下面的,但不知道如何获得当前对象的ID。 (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

Answer 1:

我知道我没看你的代码更近。 因为你初始化模型实例和self.page尚未设置为数据库中的一个页面self.page将无法正常工作。 你应该尝试,而不是:

class PageImage(models.Model):
    page = models.ForeignKey(Page)
    page_photo = FileBrowseField("Image", max_length=200, blank=True, null=True)

    def save(self, *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
        super(PageImage, self).save(*args, **kwargs)

做你想做什么,你已经在PageImage分配一个页面到外地之后。



文章来源: Django filebrowser, model specific directory parameter for FileBrowserField