Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2013 13:28:42

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

model save progress

Задача следующая: Есть модель1 с FileField, куда заливаются файлы в формате csv. При сохранении объекта модели1 csv должен парситься и создавать объекты модели2. Это всё сделал. Теперь вопрос - как сделать визуализацию процесса создания объектов моделий2 при сохранении объекта модели1? То есть я в админке вставляю в поле файл csv, нажимаю “сохранить” и хочу, чтобы отображало процесс создания объектов модели2

Офлайн

#2 Июнь 10, 2013 15:34:04

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

model save progress

Что значит “отображать процесс создания”?

Офлайн

#3 Июнь 10, 2013 15:43:07

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

model save progress

lorien
Что значит “отображать процесс создания”?
Ну например вставляю в csv файл, наимаю “сохранить” объект модели 1. Так как он достаточно велик и имеет, допустим 500 позиций, я хочу чтобы при сохранении был какой-нить прогрессбар, показывающий сколько объектов создано… типа 134/500

Офлайн

#4 Июнь 10, 2013 16:13:07

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

model save progress

Это все реализуется, например, с помощью Push (инструменты могут быть разные).
Только это имеет смысл, если у вас тысячи (для хостинга) и десятки тысяч строк (VDS) строк как минимум и вы парсите значения, обрабатываете их как-то.

Если их меньше, то смысла делать прогресс нет, т.к. все будет и так быстро.

Возможно, вам достаточно как-то подготовить/преобразовать значения в файле и затянуть их целиком (bulk), если речь идет о записи в БД.



Офлайн

#5 Июнь 10, 2013 17:10:56

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

model save progress

Ну да, строк в файлах по несколько тысяч.
Сейчас создание моделей из csv сделано через Command по крону, но хотелось бы это всё запихнуть в save() первой модели, и видеть процесс создания остальных объектов. Вот только пока не знаю даже в какую сторону копать и как правильней сделать. Так как файлы большие, велика вероятность словить 500 ошибку при сохранении, а данный диалог, думаю, её как-то должен помочь решить. Так что прошу совета, как лучше сделать

Офлайн

#6 Июнь 10, 2013 18:09:13

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

model save progress

Но вы понимаете, что вообще-то такие задачи решаются не в реальном времени?
Правильно их делать с помощью очереди заданий (или просто отдельного приложения), которые обрабатываются в фоне, а по запросу можно получить статус задания (в том числе, ошибки).

https://github.com/citylive/django-progress
смотрели?



Офлайн

#7 Июнь 10, 2013 18:14:56

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

model save progress

Чуть красивее на фронте можно сделать через ajax (без перезагрузки всей страницы):
http://djangosnippets.org/snippets/2286/



Офлайн

#8 Июнь 10, 2013 19:12:52

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

model save progress

Понимаю, я ж так и сделал изначально, создал команду для крона… Спасибо за ссылки… завтра посмотрю

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version