【问题标题】:Django with MongoDBDjango 与 MongoDB
【发布时间】:2013-12-10 11:20:53
【问题描述】:

好的.. 我正在 django 1.4 中开始一个项目,我希望 MongoDB 作为我的后端。经过半天的谷歌搜索,我发现 mongoengine 是一个最好的选择(因为它是一个活跃的项目并且提供了一个类似 orm 的 django)

现在的问题是 1. 我找不到任何好的分步设置指南来将 mongoengine 与 django 项目集成。

  1. 我明白了,使用 mongoengine 意味着我正在替换 django orm,不需要做 syncdb。现在这个项目有一个多租户架构(* .domain.com),我将使用中间件来解决这个问题。这个项目的很大一部分也将在 django admin 上运行。 问题:用mongoengine替换django orm会影响django admin和其他操作(如中间件、身份验证等)吗?

我也乐于接受建议和批评。

【问题讨论】:

  • 建议:不要使用 MongoDB 作为 Django 的后端。单独使用但让 Django 使用关系数据库。
  • 该应用程序具有不断发展的数据方案......所以除了使用 noSQL 之外别无选择。
  • 您可以轻松更改(关系)模型并进行迁移。不这样做是不寻常的。您能否进一步解释一下“不断发展的数据方案”是什么意思?
  • 您还可以让两个数据库为应用程序提供动力;没有必要让你的 Django 设置复杂化。
  • 是的..用户定义表单结构的部分(添加/删除表单字段)。所以不同的用户可以有不同的表单配置,并且这些表单提交的数据会有方案,例如。用户 1 提交(姓名、联系人),而用户 2 提交(姓名、联系人、地址)

标签: python django mongodb mongoengine


【解决方案1】:

以防万一,情况发生了变化,现在有一个解决这个问题的方法,即django-mongoadmin

【讨论】:

    【解决方案2】:

    Django Admin 旨在仅与 Django ORM 一起使用。使用 MongoEngine 而没有 Django ORM 将意味着您无法获得自动管理界面。其他中间件可能使用 Django ORM 或足够抽象以允许您插入 MongoEngine - 例如:会话和身份验证。

    MongoEngine 中有一些 Django 助手 - 但它绝不是完整的或旨在替代 Django ORM。

    有关更多信息,请参阅来自 Django Conf Finland 的此演示文稿:http://staltz.github.io/djangoconfi-mongoengine

    【讨论】:

      【解决方案3】:

      Django 与 MongoDB 集成指南

      仅添加一行代码即可将 Django 与 MongoDB 连接起来:

      首先安装djongo:

      pip install djongo

      然后运行你的迁移:

      manage.py make migrations
      manage.py migrate
      

      最后添加到您的设置文件中:

      DATABASES = {
         ‘default’: {
            ‘ENGINE’: ‘djongo’,
            ‘NAME’: ‘your-db-name’,
         }
      }
      

      就这么简单!

      如果您想使用 Django Admin 操作 MongoDB,只需启动它:

      manage.py runserver

      转到:http://localhost:8000/admin/

      如此屏幕截图所示操作您的嵌入式模型:

      如需了解更多信息,请查看djongo documentation

      您绝对应该考虑使用新框架(如 MongoEngine)与使用内置 Django ORM 的优缺点。在考虑采用其他知识渊博的成员建议的 MongoEngine 之前,请阅读此tutorial!没有冒犯!

      如果您同意 cmets 中的这种方法,请告诉我 :)

      【讨论】:

      • 这看起来很棒,我想知道为什么其他人没有投票。截至目前,2018 年 1 月 24 日,该项目似乎非常活跃,尽管可能没有 GitHub 明星。我喜欢这个选项,但它似乎还没有获得吸引力。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2014-01-24
      • 1970-01-01
      • 2020-01-12
      • 2020-06-29
      • 2016-09-26
      相关资源
      最近更新 更多