Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 2

Django и mongodb

23.10.2016, 13:52. Показов 1798. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую коллеги. Подскажите как можно в Django использовать mongodb в качестве основной базы. (Python 3.5)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2016, 13:52
Ответы с готовыми решениями:

Django MongoDB авторизация
Помогите сделать авторизацию на сайте с помощью логина и пароля из mongodb. База подключается вот так. import pymongo #...

Technical Lead - Python, Django, EC2, AWS, MongoDB – Zurich, Switzerland - Visasponsorship
Our client is a leading and highly innovative software company looking for a technical lead with enthusiasm and skill, experienced in...

Mongodb, Mongoid как ускорить запись данных в Mongodb
Добрый вечер всем! Мне нужно записать в Mongodb 2.000.000 рядов информации, по очереди, один за одним, перед записью програма проверяет...

9
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
23.10.2016, 16:23
Зайди в гугл, набери django mongodb, прочитай пару статей. Будут конкретные вопросы - пиши.
0
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 564
05.07.2020, 20:10
Здравствуйте! Раз тут общая тема, то начну с того что django рекомендует использовать для этой цели библиотеку djongo:
https://code.djangoproject.com/wiki/NoSqlSupport

которая в силу своего похожего названия часто путается поисковиками.)) и из-за этого попадаются часто не релевантные ссылки, ну да ладно.

У меня вопрос вот какой. Я хочу задать поле-агрегат. А агрегаты, ну как правило, представляют собой структуру питоновского словаря, в котором разные ключи могут содержать данные различных типов и это может быть и сам словарь.

Агрегированная структура тем и полезна, что, даже при отправке запроса на запись в такую не реляционную бд, данные могут иметь совершенно произвольную структуру.

Какой тип поля для этого использовать? Есть такой тип поля, на основе класса:

Python
1
class djongo.models.Aggregate(*args, filter=None, **kwargs)
В др. библиотеке mongodb-engine такой тип поля DictField() и название более интуитивно понятно и объяснено, хотя бы на паре русскоязычных ресурсов.

По Aggregate вообще ничего нет, кроме справки без примеров и без описания его назначения. Кто сталкивался, подходит Aggregate из djongo.models для задания поля-агрегата?
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
05.07.2020, 22:37
Цитата Сообщение от maza1204 Посмотреть сообщение
Приветствую коллеги. Подскажите как можно в Django использовать mongodb в качестве основной базы. (Python 3.5)
Мне кажется, по факту это невозможно. Если речь именно об основной базе данных. Ну, самое простое: суперюзера надо создать? Уже надо реляционную базу для этого. Любые попытки иного будут греблей против течения. Мое скромное мнение. Не навязываю.

А в качестве дополнения - ну, почему нет-то. Мало ли, какие задачи там.
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 564
06.07.2020, 00:30
Цитата Сообщение от Kifsif Посмотреть сообщение
Мало ли, какие задачи там.
В том-то и дело, что NOSQL очень удобны тем, что из-за усложнения структур данных и подчас их громоздкости, они позволяют работать с ними.)) А реализовать такие вещи в django с SQL ну это как-то просто неудобно, и читабельность кода страдает и прочие вещи. Ну как доп. вспомогательные они могут быть использованы. Может в самой документации пример такой показали с 'default'

Вот еще такие разговоры про поле типа словаря Python. Люди хотят его использовать.
https://github.com/nesdis/djongo/issues/237


Python
1
2
3
from djongo import models
 
registrar_info = models.DictField()
У меня во второй строке Attribute Error , потому что его уже нет в models ) Поддерживать перестали:


DictField
MongoDB and other databases use ListField in combination with DictField to completely replace ManyToManyField in a lot of cases. Django currently doesn't provide an API for querying the data within a DictField (especially if it's embedded in a ListField). Ideally, the query API would just use the foo__bar JOIN syntax.

The field is already implemented in Django-nonrel, but lookups aren't supported, yet.[/B]

https://code.djangoproject.com/wiki/NoSqlSupport

Но можно попробовать другие библиотеки, как я уже сказал.
0
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 564
06.07.2020, 23:36
Кстати, если кому-то понадобиться использовать поле словаря для представления данных, то можно попробовать обойтись типом поля JSONField:

Python
1
2
3
4
5
6
from django.db import models
from django.contrib.postgres.fields import JSONField
 
class aModel(models.Model):
 
    F = JSONField()
А как рендерить html ? Т.е. по ключам? Как то так?:

HTML5
1
2
3
4
5
<ul>
 
{{ aModel.F['key'] }}
 
</ul>
Добавлено через 6 минут
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
07.07.2020, 00:16
Alex_py, через точку (если это джанго темплейт)

{{ aModel.F.key }}
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 564
07.07.2020, 05:45
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
Alex_py, через точку (если это джанго темплейт)
Спасибо)) А в названии ключей не должно быть пробелов?
0
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 564
07.07.2020, 14:31
И еще такой вопрос, если по некоторому ключу key --- список, то можно отображать отдельные элементы по индексам?

Как-то так?:

HTML5
1
{{ aModel.F.key[0] }}
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
07.07.2020, 15:01
Цитата Сообщение от Alex_py Посмотреть сообщение
то можно отображать отдельные элементы по индексам?
насколько я помню, то либо фильтр писать, либо слайсы

https://stackoverflow.com/ques... -templates
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.07.2020, 15:01
Помогаю со студенческими работами здесь

как реализовать аутентификацию на mongodb используя gem devise (mongodb + Rails + devise)
как реализовать аутентификацию в mongodb используя gem devise? в роутах у меня есть devise_for :user; когда пишу в rake routes, то...

Настроить авторизацию через социальные сети в django с помощью Django Social Auth
Пытаюсь настроить авторизацию через социальные сети в django с помощью Django Social Auth, но вылетаю с ошибкой WrongBackend, не работает...

Django 2.0 восстановление пароля через django-allauth
Здравствуйте, у меня возник вопрос, в django-allauth есть функция восстановления пароля по эл. почте, но вот, указав почту, сообщение не...

совместимость django-imagekit с релизами Django?
Скажите, пожалуйста, где в документации django-imagekit указана совместимость с релизами Django? А то попробовать уже переводить свой...

Ошибка django: DoesNotExist at /catalog/ django
Здравствуйте. Пишу простейший сайт на django. Пока в нем есть верхняя панель навигации и боковое меню слева, содержание которого меняется в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru