1

djangoにファイルをアップロードしようとしています。そこで、以下のコードを使用して、ファイルの動的パスを作成しようとしました。しかし、それは機能しません。

model.pyでインスタンスを使用する方法と、パスをdefget_file_pathに渡す方法が実際にはわかりません。具体的には、views.pyの関数からファイルパスを渡す必要があります。たとえば、docfile.save(filepath)のようなものを呼び出すと、djangoのそのファイルパスに保存されます。これを手伝ってくれませんか。

例:

 docfile.save(path1)

it will be saved in /path1/file_name

注:path1は何でもかまいませんが、モデルフィールドとは関係ありません。

4

2 に答える 2

3

たとえば、 in 経由でpathアクセスできるパスを指定する追加のフィールド (例: ) をモデルに持つことができます。この関数では引数にアクセスできません。instance.pathget_file_pathsave

于 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 に答える