2016-08-22 4 views
0

djangoを使って同じフォルダに2つの異なるファイルをアップロードすることができました。しかし、私はそれを2つの異なるフォルダにアップロードし、ターゲットとしてアップロードしたファイルの名前を変更する必要があります。{file_extension}とプローブ{file_extension}。私はdjango.Could誰も私の問題で私を助けてください。 私のコードは次のとおりです。Djangoのmodel.pyでdjangoを使用して2つの異なるファイルに2つの異なるファイルをアップロードして名前を変更しますか?

dirname = datetime.now().strftime('%Y.%m.%d.%H.%M.%S') 

class Document(models.Model): 
docfile = models.FileField(upload_to=dirname) 
views.py

def test(request): 
    if request.method == 'POST': 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      newdoc = Document(docfile=request.FILES['docfile']) 
      newdoc.save()      

    else: 
     form = DocumentForm() # An empty, unbound form 

    documents = Document.objects.all() 

    return render(
     request, 
     'personal/basic.html', 
     {'documents': documents, 'form': form} 
    ) 

そして、私のbasic.htmlで

<form action="/simulation/" method="post" enctype="multipart/form-data" single> 
     {% csrf_token %} 
     <p>{{ form.non_field_errors }}</p> 
     <p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p> 
     <p> 
      {{ form.docfile.errors }} 
      {{ form.docfile }} 
     <input type="submit" value="Upload" name = "file1"/></p>   
</form> 

答えて

2

あなたはジャンゴドキュメントを確認した場合FileFieldの場合、upload_toはカスタムメソッドをサポートしています:

(Djangoのドキュメントから)

def user_directory_path(instance, filename): 
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename> 
    return 'user_{0}/{1}'.format(instance.user.id, filename) 

class MyModel(models.Model): 
    upload = models.FileField(upload_to=user_directory_path) 

あなたは、ファイルを保存するために、カスタムパスを生成するために使用することができ、現在のインスタンスへのアクセス権を持つカスタム方法で見ることができるように。

関連する問題