Django direct_cloud_upload 没有提交文件。检查表单上的编码类型

Django direct_cloud_upload No file was submitted. Check the encoding type on the form

我正在尝试使用库 direct_cloud_upload 将文件直接上传到 Google Cloud Storage Bucket 而无需通过我的 cloud运行(绕过 32Mb 请求限制)。

不幸的是,我一直遇到这个错误:没有提交文件。检查表单上的编码类型。 当我尝试上传文件时,在管理员字体上,即使文件已成功上传到存储。

显然我遗漏了什么,这是我的代码:

models.py

class AudioFileModel(models.Model):

    title = models.CharField(max_length=80)
    audio_file = models.FileField(upload_to='audio/')

    class Meta:
        ordering = ['title']

    def __str__(self):
        return f"{self.title}"

forms.py

from .models import AudioFileModel
from django import forms


from google.cloud.storage import Client
import direct_cloud_upload
import os
from direct_cloud_upload import CloudFileWidget

from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(
    'service-account-key.json'
)


client = Client(credentials=credentials)

gcs_bucket = client.get_bucket(os.environ.get("GS_BUCKET_NAME"))
ddcu_bucket_identifier = direct_cloud_upload.register_gcs_bucket(gcs_bucket)


class UploadAudioFileForm(forms.ModelForm):
    class Meta:
        model = AudioFileModel
        fields = ('title', 'audio_file')
        widgets = {
            'audio_file': CloudFileWidget(
                bucket_identifier=ddcu_bucket_identifier,
                path_prefix="audio_file_new/",
            )
        }
        }

urls.py

from .views import *
import direct_cloud_upload


urlpatterns = [
    path("admin/", admin.site.urls),
    path('upload_audio_file.html', AudioFileUploadView, name='AudioFileUploadView'),
    path('direct_cloud_upload/', include(direct_cloud_upload.urlpatterns)),
]

views.py

from .forms import UploadAudioFileForm
from django.http import HttpResponse

def AudioFileUploadView(request):

    if request.method == 'POST':
        form = UploadAudioFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponse('The file is saved')
    else:
        form = UploadAudioFileForm()
        context = {
            'form': form,
        }
    return render(request, 'upload_audio_file.html', context)

我在云端没有错误运行 bug,我认为这是一个前端bug。

我使用 python 3.8.6django 3.1.6

事实证明模型中的字段应该是 CharField

models.py

class AudioFileModel(models.Model):

    title = models.CharField(max_length=80)
    audio_file = models.CharField(max_length=160)

    class Meta:
        ordering = ['title']

    def __str__(self):
        return f"{self.title}"