У меня есть модель загрузки файлов, которая сохраняет файлы на основе контрольной суммы 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']
Я могу загрузитьотдельные файлы, но при использовании нескольких файлов сохраняется только последний файл в списке. Согласно другим темам, я должен сериализовать этот процесс. Так что файлы обрабатываются один за другим. Нужны ли дополнительные пакеты?