将Django +1.10与MongoDB连接

5
有人在过去几个月内替换了Django(+1.10)中的默认数据库引擎为MongoDB吗? Google上得到的所有信息都是6或4年前的。
最常见的结果包括需要django-nonrel(Django 1.5的一个非常古老的分支)的mongodb-engine,或者同样过时的mongoengine库,它会产生许多错误,因此当您修补一个错误时,会得到一个新的错误。
我不知道是否有任何“新”的方法来实现这一点。

你找到了什么吗? - Edik Mkoyan
使用Mongodb和Django似乎不是一个好主意,因为Django拥有最好的ORM之一,您将无法使用Django的杀手锏功能。 - vtisnado
@vtisnado,你解决了这个问题吗?我在Django 1.11与MongoDB中遇到了同样的问题。 - Jignasha Royala
3个回答

4

通过使用docker进行多个构建和测试,尝试不同版本的组合,我成功地实现了一个稳定可用的Django MongoDB应用程序,使用以下版本:

Django==1.10.0
pymongo==2.7.1
six==1.10.0
mongoengine==0.9.0

安装所需库后,编辑您的settings.py文件以更新或添加以下内容。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.dummy'
    }
}
AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend',
)
from mongoengine import *
    connect('database_name', host='host_ip',  port=27017)

更改数据库名称和主机IP。如果没有指定IP,则默认尝试连接到localhost。

现在,运行您的应用程序应该已连接到数据库并准备好使用。 有关如何使用它的信息,请查看mongoengine 文档


我可以使用管理员页面添加数据吗? - bharadhwaj

2
有多种集成MongoDB和Django的方法。根据您采取的策略,您可能会遇到困难或者顺利完成!作为Web开发人员,您可以通过以下两种方式之一来接受将Django连接到MongoDB的挑战:
使用与MongoDB兼容的模型框架:在您的Django项目中使用第三方框架,如MongoEngine或Ming。但是,您将错过以下内容:
- 1500多个核心贡献者, - 每小时的修复和票证解决, - 减少现有Django模型的专业知识并增加新模型框架的专业知识。 - 也许最大的缺点是您的项目无法使用Django的任何contrib模型!忘记在您的项目中使用Admin、Sessions、Users、Auth等contrib模块!
Django SQL转MongoDB编译器 - Djongo:该策略是将Django ORM生成的SQL查询语法转换为pymongo命令。 Djongo是一个SQL到MongoDB查询编译器。它将每个SQL查询字符串转换为mongoDB查询文档。因此,
  • 所有Django模型和相关模块都可以正常工作。
  • 使用Django Admin GUI添加MongoDB嵌入式文档。
  • Djongo为Django ORM提供了API扩展,让您可以像MongoEngine一样“嵌入”一个文档到另一个文档中。

如果您正在寻找更多信息,可以查看使用Django与MongoDB的文章,仅需添加一行代码即可。否则,您可以直接跳转到djongo文档并开始使用它。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接