2016-09-17 8 views
1

ユーザーが2つの.iniファイルをアップロードした後、両方のファイルを次のフォルダに保存します。ファイルをDjangoの特定のフォルダにアップロードするにはどうすればよいですか?

MEDIA/uploadedconfigs /プリンタ/プラスチック/

しかし、それは現在、下記の住所に保存しています。以下は

MEDIA/uploadedconfigs /なし/


ファイルをアップロードするコードです。
models.py

def UploadedConfigPath(instance, filename): 

    return os.path.join('uploadedconfigs', str(instance.id), filename) 

class ConfigFiles(models.Model): 

    Printer = models.CharField(_('Printer Model'), 
    max_length=100, blank=True, null=True, unique=False) 
    Plastic = models.CharField(_('Plastic'),  
    max_length=40, blank=True, null=True, unique=False) 
    creator = models.CharField(_('Creator'), 
    max_length=40, blank=True, null=True, unique=False) 
    HDConfig = models.FileField(_('High Detail'), 
    upload_to=UploadedConfigPath) 
    LDConfig = models.FileField(_('Low Detail'), 
    upload_to=UploadedConfigPath) 

    pub_date = models.DateTimeField(_('date_joined'), 
    default=timezone.now) 

私は「インスタンス」は何をしているのかいないんだけど、私は、それが「なし」のフォルダ名を吐き出しているものだと言われました。私はまた、私は一時的なフォルダにファイルを配置する必要があるかもしれないと言われたが、私はそれが何が伴うか分からない。どんな助けもありがとう!

答えて

1

あなたはこれで機能UploadedConfigPathを置き換えることができます:設定でパラメータを設定することにより、独創的なアプローチを使用しようと

def UploadedConfigPath(instance, filename): 
    return os.path.join('uploadedconfigs', instance.Printer, instance.Plastic, filename) 
+0

私は明確ではなかったかもしれません。 ModelClassに示すように、ユーザーが入力する変数 'Printer'と 'Plastic'にアップロードしようとしています。あなたのメソッドを使用すると、実際には「プリンタ」と呼ばれるフォルダにアップロードされ、ユーザ入力変数はアップロードされません。 – RknRobin

+0

@RknRobinはい、あなたは本当にはっきりしていません...とにかく私は自分の答えを編集しました。 –

+1

これはまさに私がおかげさまで探していたものです! – RknRobin

2

def UploadedConfigPath(instance, filename): 
    return os.path.join('uploadedconfigs', 'Printer', 'Plastic', filename) 

編集:

これはそれを行う必要があります.py

あなたのファイルで

def UploadedConfigPath(instance, filename): 
     return os.path.join(settings.MEDIA_ROOT, 'uploadedconfigs/', str(instance.id), '/', filename) 
+0

私はこれをあまりにも単純化したかもしれませんが、私はそのアプローチを使用しており、上に示した変数MEDIAにすべてをラップしています。私の設定は上記のようになり、MEDIA_ROOTに正しくアップロードされます(設定は必要ありません.MEDIA_ROOT)。私の問題は、単にあなたのsettings.pyを更新していない場合は、 – RknRobin

+0

というフォルダに出力する(str(instance.id)、filename)です。このdefを使用しても問題ありません。UploadedConfigPath(インスタンス、ファイル名): return os.path.join ( 'uploadedconfigs /'、str(instance.id)、 '/'、filename) – Sagar

関連する問題