2016-08-22 3 views
0

Ich könnte zwei verschiedene Dateien im selben Ordner mit Django hochladen. Aber ich muss es in zwei verschiedene Ordner hochladen und auch die Dateien umbenennen, die ich als Ziel hochgeladen habe. {File_extension} und probe. {File_extension} .Ich habe keine Ahnung, wie ich ein Anfänger zu django.Könne mir bitte helfen Sie mir mit meinem Problem . Meine Codes sind:Mit django zwei verschiedene Dateien in zwei verschiedenen Ordnern hochladen und umbenennen?

In django model.py

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

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

In 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} 
    ) 

Und in meinem 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> 

Antwort

2

wenn Sie django docs überprüfen Für FileField sehen Sie upload_to unterstützt benutzerdefinierte Methode:

(von django docs)

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) 

, wie Sie in Ihrer benutzerdefinierten Methode sehen haben Sie Zugriff auf aktuelle Instanz, die Ihre benutzerdefinierten Pfad-Datei speichern für die Erzeugung genutzt werden kann.

Verwandte Themen