Django - Где хранить временные / предварительные модели перед записью в базу данных? - PullRequest
0 голосов
/ 27 июня 2011

У нас есть файл CSV, который мы импортируем в приложение Django, а затем создаем соответствующие модели и отношения.

На первой странице у нас есть форма загрузки файла, где пользователь выбирает файл.

Затем мы анализируем файл и возвращаем вторую страницу с указанием того, что будет создано, все ошибки проверки и т. Д.

Затем пользователь может решить, продолжать или нет (или, возможно, исправить какие-либо области на экране).

Как лучше всего хранить временные промежуточные модели, прежде чем они действительно попадут в базу данных?

Файл CSV будет довольно большим, возможно, размером около 200 КБ, и позволит создать несколько сотен моделей.

Должен ли я хранить это где-нибудь в базе данных и маркировать эти модели как "временные"? Это кажется немного тяжелым только для подтверждения, и я не уверен, что это правильное использование базы данных. Или есть какой-нибудь способ, которым мы могли бы сохранить это в сессиях Django? Или любой другой способ сделать это?

Я упоминал об этом ранее на django-users, и они предлагали либо использовать отдельную БД, либо хранить ее в MongoDB. Я не совсем уверен, что лучший способ сохранить модель Django в MongoDB таким образом.

Они также отметили, что мне может понадобиться что-то вроде ZeroMQ или django-celery для асинхронной обработки процесса импорта в случае, если время ожидания веб-сервера истекло.

Во всяком случае, я подумал, что я также должен привлечь внимание к SO-сообществу, поскольку здесь также скрывается множество ярких людей из Django =).

Cheers, Victor

1 Ответ

1 голос
/ 27 июня 2011

Если этот процесс импорта в CSV-файл будет распространенным и постоянным (т.е. используется многими пользователями и не ограничен в течение короткого периода времени), я бы предпочел включить логику в модели: я бы изменил модели, чтобы иметьфлаг, указывающий, что экземпляр активен или ожидает (вы также можете добавить удаленный).Это может быть дополнено несколькими менеджерами.Менеджер по умолчанию может быть изменен для фильтрации только активных объектов, тогда как второй менеджер может выбирать только ожидающие объекты.Задание может быть написано для ухода за объектами, которые ожидают долгое время.

В противном случае (если это временная ситуация), вы можете выбрать любую среду, с которой вам удобно, для сохранения ожидающих объектов.

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