Django动态文件上传路径

时间:2015-08-17 09:31:54

标签: python django file file-upload

这是我的django代码。

我想在特定位置上传我的文件,并且该路径是动态创建的。

def get_upload_file(instance, filename):
   today_date = datetime.datetime.today().date()
   directory = 'Data/'+ str(today_date)
   if not os.path.exists(directory):
       os.makedirs(directory)
   full_path = str(directory)+"/%s" %(filename)
   print "full_path --> ",full_path
   # user = updated_path()
   # print user
   return full_path


class UploadFile(models.Model):
   path = models.FileField(upload_to=get_upload_file)

我正在尝试上面的代码上传文件,但我想要其中的另一个目录,其名称是用户名。

预期产出

Data/2015-08-16/username/ 

然后我想在用户名目录中上传文件

任何解决方案请帮助我

1 个答案:

答案 0 :(得分:1)

最后,我得到了上述问题的解决方案。当我为该实例创建类实例集请求对象并在get_upload_file函数中访问该请求对象时

 class UploadFile(models.Model):
       path = models.FileField(upload_to=get_upload_file)
       reqObj = None

       def set_reqObj(self, request):
           self.reqObj = request

new_file = UploadFile(path = afile)
new_file.set_reqObj(request)

在get_upload_file函数中使用reqObj

instance.reqObj.user.username

更新了get_upload_file函数

def get_upload_file(instance, filename):
   today_date = datetime.datetime.today().date()
   directory = 'Data/'+ str(today_date)+'/'+instance.reqObj.user.username
   if not os.path.exists(directory):
       os.makedirs(directory)
   full_path = str(directory)+"/%s" %(filename)
   return full_path