使用django上传并重命名两个不同文件夹中的两个不同文件?

时间:2016-08-22 03:45:32

标签: python django

我可以使用django在同一个文件夹中上传两个不同的文件。但我必须将其上传到两个不同的文件夹,并将我上传的文件重命名为目标。{file_extension}和probe。{file_extension}。我不知道因为我是django的初学者。可以请任何人帮我解决问题。 我的代码是:

在django model.py

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> 

1 个答案:

答案 0 :(得分:2)

如果您查看FileField的django文档,则会看到upload_to支持自定义方法:

(来自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)

正如您在自定义方法中看到的那样,您可以访问当前实例,该实例可用于生成保存文件的自定义路径。