Как в форме django инициировать поле типа file, если значение уже есть?
Имеется экземпляр модели с файлом. Файл загружен на диск.
Вопрос: как штатно сгенерировать форму для обновления модели? Суть в том, что, видимо, надо подставлять в неё целиком имеющийся файл. Есть какие-то иные варианты, без необходимости считывать полное содержание файла и отправкой его клиенту в форме (или как там это работает)?
Это невозможно. Система безопасности браузеров позволяет устанавливать значения полей ввода типа file только в результате осуществления пользователем последовательности действий в виде нажатия на кнопку и выбора файла. Вам придётся просто выводить рядом с полем какой-нибудь маркер того, что файл уже загружен.
Да, я уже пришел к этому выводу.
Надо будет генерировать флажок удаления имеющегося файла и форму загрузки. Если форма загрузки пустая и флаг не установлен, то ничего не делать. Если файл загружен в браузере, то принимать его. Если флагу выставлен, то чистить модель.
Логично, да.
Спасибо.
Может, какой-нить виджет для этого уже наверняка есть.
На самом деле, всё оказалось сложнее. У меня инициация производилась через modelform_factory. Если делать всё вручную, то django всё делает правильно и подкладывает инфу про загруженный файл и даже можно его удалить.
Пока что заставить работать modelform_factory не получается. Форма генерируется неправильно. В документации нет примеров и подробностей, вываливаются ошибки. Где косяк, пока не понятно.