Как загрузить несколько файлов в 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. Чтобы иметь несколько файлов, вам нужно использовать несколько FileFields:

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.

Вернуться на верх