Django管理中文件的URL错误

时间:2018-09-12 12:42:39

标签: django

我得到了错误的URL,该URL指向已上传到Django管理员中的媒体文件夹的文件。

文件的URL为:

/media/Users/hammer/Dev/*****/media/attachments/2018/09/12/pdf-test.pdf

但是文件的正确URL是:

/media/attachments/2018/09/12/pdf-test.pdf

似乎MEDIA_ROOT(/ Users / hammer / Dev / ***** / media /)被错误地添加到URL中的第一个/ media /之后。

MEDIA_URL是:

MEDIA_URL = '/media/'

MEDIA_ROOT是:

MEDIA_ROOT = settings.BASE_DIR + '/media/'

模型的文件字段的定义为:

    file = models.FileField(upload_to=settings.MEDIA_ROOT + "attachments/%Y/%m/%d/", null=True)

文件字段模型的更改页面上显示了文件字段的错误URL。

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

您不应在“ upload_to”参数中专门包含MEDIA_ROOT。参见documentation

  

如果使用默认的FileSystemStorage,则字符串值将附加到MEDIA_ROOT路径中,以形成本地文件系统上将存储上载文件的位置。

因此,只需将其删除:

file = models.FileField(upload_to="attachments/%Y/%m/%d/", null=True)

不过,您将需要使用db中的错误值重新创建实例。