1

我正在尝试将文件上传到 django。因此,我尝试使用下面的代码为文件创建动态路径。但是,它不起作用。

我实际上不确定如何在 model.py 中使用实例以及如何将路径传递给 def get_file_path。具体来说,我想要的是从views.py中的函数传递文件路径。例如,当我调用类似 docfile.save(filepath) 的东西时,它将被保存在 django 的那个文件路径中。你能帮我解决这个问题吗?

一个例子:

 docfile.save(path1)

it will be saved in /path1/file_name

注意:path1 可以是任何东西,它与任何模型字段无关。

4

2 回答 2

3

例如,您可以在模型上有一个额外的字段(例如path),指定您可以通过instance.pathin访问的路径get_file_path。您无法访问save此函数中的参数。

于 2012-11-25T03:42:05.810 回答
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)'
于 2012-11-25T02:50:22.117 回答