Django“手动”上传的文件不会将upload_to记入帐户

时间:2013-05-06 13:25:55

标签: django file file-upload upload

我正在从旧网站迁移到新网站,这包括移动大量徽标/图片/ PDF等。在旧网站上我使用base64编码导出这些,我在新网站上进行64解码。到现在为止还挺好。一切似乎都有效。

但是,出于某种原因,文件最终出现在我的MEDIA_ROOT而不是MEDIA_ROOT /中。所以这意味着我的MEDIA_ROOT中有几千个文件,不太好。

一些代码:

ntf = NamedTemporaryFile(delete=True)
ntf.write(base64.standard_b64decode(obj['logo']))
ntf.flush()
c.logo.save('photo-{0}.img'.format(c.id), File(ntf))

在这种情况下,c是Django模型实例,logo是ImageField。 Django模型的定义c

class C(models.Model):
    def file_path(self, filename=None):
        return (format(self.id).join(['c_obj', '.jpg'])).lower()

    name = models.CharField(_(u'name'), max_length=150)
    logo = models.ImageField(_(u'logo'), upload_to=file_path, null=True, blank=True)

任何可以告诉我这里出了什么问题的人?

1 个答案:

答案 0 :(得分:1)

您的file_path函数未返回目录名称。它返回'c_obj13.jpg'(当self.id为13时)。因此,没有目录(注意没有目录分隔符)。