обработка загруженных файлов администратором django

#django #fieldset #filefield

#django #набор полей #поле файла

Вопрос:

Вот что я хочу сделать, и я пока не нашел ничего подобного в своем поиске. На моей странице администратора у меня есть поле Filefield в моей модели. Все остальные поля доступны только для чтения. Я хочу иметь возможность загружать файл и обрабатывать его немедленно, а также извлекать из него информацию для назначения этим полям только для чтения.

Я подумал о переопределении метода clean_ (modelfield) для этого FileField и выполнить этот синтаксический анализ и назначить в нем данные. Но это не делается сразу после загрузки файла, верно? Я думал, что это делается при сохранении формы / записи. Затем я подумал о добавлении пользовательской кнопки в эту форму администратора под названием «процесс», которую можно нажать после загрузки файла. Это приведет к присвоению значений полям, доступным только для чтения. Но я не могу решить, какой наилучший подход для обработки файла и отображения обновленных полей на одной странице без особых усилий.

Есть мысли? Спасибо

Ответ №1:

Есть два решения, о которых я могу подумать с моими ограниченными знаниями. Поскольку по умолчанию загрузка файла начнется только после отправки запроса, необходимо разработать альтернативный способ.

1. Загрузите файл с помощью скрипта и обработайте файл: Используйте скрипт (например, jQuery script) для загрузки файла, а после завершения загрузки запустите скрипт (событие onComplete) для преобразования значений в поле, доступное только для чтения. Весь этот процесс может быть связан с вашей кнопкой «Обработать» или триггером с задержкой по времени после изменения поля файла.

2 Пользовательская форма для загрузки файла: Вы можете отключить поле файла и другие поля (поля только для чтения, которые вы упомянули). Если вы создаете пользовательскую форму, используя только поле загрузки файла, и как только пользователь отправляет запрос, вы можете отобразить другую форму с отображаемыми начальными значениями в полях, доступных только для чтения. Таким образом, вам не нужно иметь никакого скрипта, но вам нужно будет иметь 2 формы.

Надеюсь, это поможет. Если вы найдете какое-либо другое решение, поделитесь им 🙂

Комментарии:

1. Спасибо за постоянные параметры. Кажется, мне больше нравится второй, поскольку в нем больше Django, чем внешнего материала. На самом деле попытаюсь реализовать что-то подобное и посмотреть, что из этого получится.

2. Конечно, позвольте мне ответить. Кстати, я думаю, что мастер форм тоже можно использовать. Здесь есть кое-что интересное, касающееся передачи данных между формами с помощью мастера форм. Просто еще один вариант, о котором я подумал сейчас.

3. Отличное предложение. Я даже нашел хорошую страницу, иллюстрирующую это. elo80ka.wordpress.com/2009/10/28 / … поскольку я хочу использовать его со своими страницами администратора. Переопределение шаблона администратора для включения этапа обработки загруженного файла перед отправкой — это еще один вариант.