2012-11-25 175 views
1

我想上传文件到Django。所以,我试图使用下面的代码为文件创建一个动态路径。但是,它不起作用。django文件上传到动态路径

我其实不知道如何在model.py中使用实例,以及如何将路径传递给def get_file_path。 具体来说,我想要的是从view.py中的函数传递文件路径。 例如,当我调用docfile.save(filepath)时,它将被保存在django的文件路径中。你能帮我解决吗?

一个例子:

docfile.save(path1) 

it will be saved in /path1/file_name 

注:路径1可以是任何东西,它是不相关的任何模型字段。

回答

3

例如,您可以对指定哪个你可以通过instance.pathget_file_path然后访问路径模型中的额外的字段(例如path)。您无法在此函数中访问save的参数。

+0

谢谢,我知道了,你的评论真的帮助了我。 –

+0

没问题。乐意效劳 :) –

0

您可以编写自定义文件字段。

class MyFieldField(FileField): 

def get_path(self, attname): 
     return 'path/to/%d' % self.id 

def contribute_to_class(self, cls, name): 
    super(MyFileField, self).contribute_to_class(cls, name) 
    dispatcher.connect(self._post_init, signals.post_init, sender=cls) 

def _post_init(self, instance=None): 
    if hasattr(instance, 'get_path'): 
     self.upload_to = instance.get_path(self.attname) 

def db_type(self): 
    return 'varchar(100)' 
+0

我得到相同的错误说:对象没有属性 –

+0

你能粘贴完整的错误? –

+0

它太长了。基本上,它说在/ upload_file /上的属性错误。 –