Django将文件上传到数据库中的目录和文件名

时间:2015-09-18 10:35:15

标签: python django forms

问题1:我想将文件上传到自定义目录,我的文件名将保存在数据库中。我的文件很好地上传,甚至文件名保存在数据库中,但问题是我的文件将转到tmp目录。

那么如何在代码中设置我的上传目录路径?我想要的目录是MEDIA_ROOT /static/uploads/

这是我到目前为止所尝试的(多文件处理)

for file_name in request.FILES.getlist('project_file'):
  full_filename = os.path.join(settings.MEDIA_ROOT, '/', file_name)
  project_files = ProjectFile.objects.create(file_name=file_name,project_id=proj_id)
  project_files.save()

但是这显示以下错误

  

' InMemoryUploadedFile'对象没有属性'替换'

我的ProjectFile型号

class ProjectFile(models.Model):
project = models.ForeignKey(Project)
file_name = models.CharField(max_length=100)

def __unicode__(self):
    return self.id

问题2:我需要Form课程完成的django编辑表单的示例或演示,而不是ModelForm

我是django的新手。请帮忙

1 个答案:

答案 0 :(得分:0)

os.path.join添加了'/'字符。该行应该读

full_filename = os.path.join(settings.MEDIA_ROOT, file_name)

我不明白你的错误 - 你说文件被正确上传但是到了错误的目录,然后发布了一个堆栈跟踪片段,意味着该方法失败了:)这看起来像你的模型对象有问题 - 包括堆栈跟踪线,告诉您故障在哪一行,并包含模型代码,我们也会查看错误。