Ошибка типа: отсутствует один обязательный аргумент в содержимом - PullRequest
0 голосов
/ 06 апреля 2020

Код ниже

 if request.method == 'POST':
        record_name = request.POST.get('recordname')
        record_date = request.POST.get('recorddate')
        record_generate_by = request.POST.get('recordgenerateby')
        record_description = request.POST.get('recorddescription')
        record_file = request.FILES.get('recordfile')
        record_image = request.FILES.get('recordimage')
        fs = FileSystemStorage

        if record_file is None:
            record_file = 'No File'
        else:
            fs.save(record_file.name , record_file)


        if record_image is None:
            record_image = 'No Image'
        else:
            fs.save(record_file.name , record_file)

Я использовал этот API (FileSystemStorage) много раз, но на этот раз он показывает ошибку, подобную этой, и уже использовал этот API в предыдущей функции, а MEDIA_ ROOT и MEDIA_URL все готово. Предыдущая функция успешно сохраняет файл и изображение, но это показывает тип ошибки. Теперь, каково решение: ошибка

       File "C:\Users\Mahad Akbar\PycharmProjects\FYP\Healthcare\myapp\views.py", line 754, in addnewRecord
       fs.save(record_file.name , record_file)
      TypeError: save() missing 1 required positional argument: 'content'
       [06/Apr/2020 17:15:28] "POST /addnewRecord HTTP/1.1" 500 72349

1 Ответ

0 голосов
/ 06 апреля 2020

fs = FileSystemStorage возвращает class, а не экземпляр FileSystemStorage. Так что в этом случае save принимает 3 аргумента: self, name и content.

Вам нужно создать экземпляр FileSystemStorage: fs = FileSystemStorage(). Или лучше использовать экземпляр django.core.files.storage.default_storage, который будет работать с любым хранилищем, которое вы используете после развертывания в производство.

Кроме того, при сохранении вы не можете установить содержимое в строку («Нет файла»), Вы должны создать объект File с этим содержимым.

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