上传多个文件到Django

2024-06-20 12:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

models.py

file_1 = models.FileField(blank=True, upload_to='PN_files/%Y/%m/%d/', verbose_name="File 1", validators=[validate_file_size], help_text="Allowed size is 50MB")

views.py

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title', 'file_1']

    def form_valid(self, form):   
        form.instance.author = self.request.user

        return super().form_valid(form)

HTML代码:

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">

        <form method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Fill form</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Submit</button>
            </div>
        </form>
    </div>
{% endblock content %}

我使用此代码在表单中上载文件。现在我需要上传多个文件,但是当我按照Django Uploading multiple files上的示例进行操作时,我无法让它工作。My views.py现在看起来像(3个示例中没有一个适合我):

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title', 'file_1']

    def form_valid(self, form):   
        form.instance.author = self.request.user

        widgets = {'file_1': form.ClearableFileInput(attrs={'multiple': True})}
        form.instance.file_1 = form.FileField(widget=form.ClearableFileInput(attrs={'multiple':True}))
        form.instance.file_1 = form.FileField(widget=form.FileInput(attrs={'multiple': True}))

        return super().form_valid(form)