Модели django без базы данных - программирование
Подтвердить что ты не робот

Модели django без базы данных

Я знаю, что автоматическая настройка заключается в том, чтобы любые модели, которые вы определяете в models.py, становились таблицами базы данных.

Я пытаюсь определить модели, которые не будут таблицами. Им нужно хранить динамические данные (которые мы получаем и настраиваем из API), каждый раз, когда пользователь что-то ищет. Эти данные должны быть собраны, а затем, когда пользователь будет завершен, отбрасываются.

ранее я использовал таблицы базы данных для этого. Это позволило мне делать что-то вроде "Trips.objects.all" в любом представлении и передавать его любому шаблону, поскольку все это происходило из одного источника данных. Я слышал, вы просто не можете "сохранить" экземпляр модели, а затем он не сохраняется в базе данных, но мне нужно получить доступ к этим данным (которые я собрал в одном представлении), в нескольких других представлениях, чтобы манипулировать им и отображать его., если я не сохраняю, я не могу получить к нему доступ, если я сохраню, а затем его в базе данных (которая имела бы проблемы с concurrency с несколькими пользователями)

Я действительно не хочу передавать словарь/список, и я даже не уверен, как я это делал, если бы мне пришлось.

идеи?

Спасибо!

4b9b3361

Ответ 2

Просто звучит как обычный Class для меня.

Возможно, используйте промежуточное программное обеспечение, чтобы создать экземпляр, когда запрос приходит и отбрасывается, когда запрос завершен. Одна стратегия доступа может заключаться в том, чтобы присоединить ее к самому объекту запроса, но ymmv.

Ответ 3

В отличие от SQLAlchemy, django ORM не поддерживает запросы к модели без бэкэнда базы данных.

Ваш выбор ограничен использованием базы данных SQLite в памяти или использования сторонних приложений, таких как dqms, которые обеспечивают чистую память бэкэнд для ORM django.

Ответ 4

Используйте Django структуру кэша, чтобы хранить данные и делиться ими между представлениями.

Ответ 5

Попробуйте использовать базу данных или файл на основе sessions.

Ответ 6

Вам нужно кэширование, которое будет хранить ваши данные в памяти и будет отдельным приложением.

В Django вы можете использовать различные кэширующие бэкэнд, такие как memcache, бэкэнд базы данных, redis и т.д. Поскольку вам нужны основные возможности запроса и сортировки, я бы рекомендовал Redis. Redis имеет высокую производительность (не выше memcache), поддерживает datastructures (string/hash/lists/sets/sorted-set).

Redis не заменит базу данных, но подходит для модели базы данных Key-Value, где вам нужно подготовить ключ для эффективного запроса данных, поскольку Redis поддерживает запросы только на клавиши.

For example, user 'john.doe' data is: key1 = val1
The key would be - john.doe:data:key1
Now I can query all the data for for this user as - redis.keys("john.doe:data:*")

Команды Redis доступны в http://redis.io/commands

Django Redis Cache Backend: https://github.com/sebleier/django-redis-cache/

Ответ 7

Я ставлю свою кровать в MongoDB или любой другой nosql; сохранение и удаление данных невероятно быстро, вы можете использовать django-norel (mongodb) для этого.

http://django-mongodb.org/