Администратор django загрузил обработку файла - PullRequest
4 голосов
/ 30 апреля 2011

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

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

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

1 Ответ

1 голос
/ 30 апреля 2011

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

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

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

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

...