Как загрузить несколько файлов в Django
Я пытался найти решение для добавления нескольких файлов с помощью формы перетаскивания. Я использую Rest API Django и React.
Это то, что я пробовал до сих пор, но похоже, что это будет работать только с одним файлом одновременно:
class FileCollection(models.Model):
Name = models.CharField(max_length=150, null=True, blank=True)
Files = models.FileField(upload_to='videos_uploaded', null=True, blank=True, validators=[
FileExtensionValidator(allowed_extensions=['mp4', 'm4v', 'mov', 'mpg', 'mpg2', 'mpeg'])])
Как сделать так, чтобы я мог загружать несколько файлов одновременно с помощью rest api? Я нашел здесь только несколько ответов относительно изображений.
Поскольку в своем вопросе вы показываете только модель, я предполагаю, что вы спрашиваете о том, как создать модель, хранящую несколько файлов. Ваше текущее поле Files
фактически является только одним файлом, поскольку вы объявляете его как FileField
. Чтобы иметь несколько файлов, вам нужно использовать несколько FileField
s:
class FileCollection(models.Model):
name = models.CharField(max_length=150, null=True, blank=True)
file1 = models.FileField(upload_to='videos_uploaded', null=True, blank=True, validators=[
FileExtensionValidator(allowed_extensions=['mp4', 'm4v', 'mov', 'mpg', 'mpg2', 'mpeg'])])
file2 = models.FileField(upload_to='videos_uploaded', null=True, blank=True, validators=[
FileExtensionValidator(allowed_extensions=['mp4', 'm4v', 'mov', 'mpg', 'mpg2', 'mpeg'])])
Теперь здесь будет 2 файла. Если вам нужно произвольное количество файлов, то сначала нужно иметь модель, которая хранит один файл, и использовать ForeignKey
для добавления этого файла в коллекцию:
class FileCollection(models.Model):
name = models.CharField(max_length=150, null=True, blank=True)
class File(models.Model):
name = models.CharField(max_length=150, null=True, blank=True)
file = models.FileField(upload_to='videos_uploaded', null=True, blank=True, validators=[
FileExtensionValidator(allowed_extensions=['mp4', 'm4v', 'mov', 'mpg', 'mpg2', 'mpeg'])])
collection = models.ForeignKey(FileCollection)
Если вы хотите добавить файл в несколько коллекций, вы можете использовать ManyToManyField
вместо ForeignKey
.
Здесь рассматривается только модель, поскольку это все, что вы указали в своем вопросе. Вам также потребуется создать представление для этого. Обратите внимание, что REST API не позволяет загружать файлы. Скорее всего, вам придется использовать многокомпонентную форму вместо REST API.
Примечание: в python поля должны начинаться с нижнего регистра. Например, используйте name
вместо Name
.