Django, как сериализовать загрузку нескольких файлов с проверкой с помощью forms.ModelForm? - PullRequest
0 голосов
/ 31 октября 2019

У меня есть модель загрузки файлов, которая сохраняет файлы на основе контрольной суммы md5:

# models.py
class File(models.Model):
    # use the custom storage class fo the FileField
    orig_file = models.FileField(
        upload_to=media_file_name, storage=file_system_storage)
    md5sum = models.CharField(max_length=36, default=timezone.now, unique=True)
    created = models.DateField(default=timezone.now)

    def save(self, *args, **kwargs):
        print('Saving new raw file.', self.md5sum)
        if not self.pk:  # file is new
            md5 = hashlib.md5()
            for chunk in self.orig_file.chunks():
                md5.update(chunk)
            self.md5sum = md5.hexdigest()
        if not self.id:
            self.created = timezone.now()
        print('Saving new raw file.', self.md5sum)
        super(RawFile, self).save(*args, **kwargs) 

Форма, которую я использую для загрузки файлов, выглядит следующим образом:

# forms.py
from django import forms
from .models import File

class UploadRawForm(forms.ModelForm):
    orig_file = forms.FileField(
        widget=forms.ClearableFileInput(attrs={'multiple': True})
        )
    class Meta:
        model = File
        fields = ['orig_file']

Я могу загрузитьотдельные файлы, но при использовании нескольких файлов сохраняется только последний файл в списке. Согласно другим темам, я должен сериализовать этот процесс. Так что файлы обрабатываются один за другим. Нужны ли дополнительные пакеты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...