【问题标题】:Django admin and MongoDB, possible at all?Django admin 和 MongoDB,可能吗?
【发布时间】:2011-03-31 05:25:34
【问题描述】:

我正在构建一个简单的短 URL 服务,供我们公司使用。我想使用 mongodb 来存储数据,但我需要一些简单的接口来添加/编辑短 url 到长 url 映射。

mongo 文档将非常简单,如下所示:

{
  shortUrlSlug: 'pbbs',
  fullUrl: 'http://example.com/peanut/butter/and/bacon/sandwiches/'
}

是否有任何东西可以向 mongodb 公开一个简单的“CRUD”管理界面,可以与 django 集成,您可以在其中指定模型?
基本类似于 django admin,但不需要 SQL 数据库。

谢谢!

【问题讨论】:

    标签: python django django-admin mongodb


    【解决方案1】:

    我已经确认 django-nonrel 项目确实支持管理界面。我确实遇到了一个问题,默认 SITE_ID 被选为一个数字,这在 MongoDB 中是不允许的主键。我通过设置解决了这个问题:

    SITE_ID = '4d421623b0207acdc500001d'

    在我的 settings.py 中

    我通过shell打印集合中第一个站点值的id得到了数字。

    我没有对此进行广泛测试,但确实为 Poll 对象注册了一个管理员并看到它工作。

    【讨论】:

    • 这完全有效。只需启动 mongo shell,执行“db.django_site.find()”并使用结果中的 ObjectId 值作为 settings.py 中 SITE_ID 的值。
    • 如果您不需要站点选项,将其从已安装的应用程序中删除也可以完成这项工作
    【解决方案2】:

    我已经将 django-nonrel 与 mongodb-engine 一起使用,并且效果很好。 Django admin 也适用于标准模型字段。但是,如果您使用的是 listfield 和 dictfield,则需要进行一些黑客攻击。

    【讨论】:

      【解决方案3】:

      我不是很肯定,但 django-nonrel 和 mongodb 后端现在可能支持 django 管理员......这可能值得研究

      http://www.allbuttonspressed.com/projects/django-nonrel

      【讨论】:

        【解决方案4】:

        这是一个老问题,但如果今天有人碰巧遇到同样的问题,我认为他最好的选择是http://humongous.io。这是一个类似于 django-admin 的 mongoDB 界面。它知道如何猜测/处理关系,并且几乎可以像 Django 管理员一样工作。

        【讨论】:

          【解决方案5】:

          django-nonrel 是 django 的一个分支,一年多没有更新。 django-mongonautdjango-mongoadmin 是 django 包,可能更合适。

          【讨论】:

            【解决方案6】:

            Django Admin 非常适合 MongoDB。你看过Djongo 项目吗?

            Djongo 是一个 SQL 到 MongoDB 查询编译器。它将每个 SQL 查询字符串翻译成一个 mongoDB 查询文档。结果,

            • 所有 Django 模型和相关模块都按原样工作。
            • 使用 Django Admin GUI 添加 MongoDB 嵌入文档。
            • Djongo 为 Django ORM 提供 API 扩展,让您可以将一个文档“嵌入”到另一个文档中,例如 MongoEngine。

            Using Django with MongoDB 上有一篇文章,只需添加一行代码,如果您正在寻找更多信息。否则,您可以直接跳转到djongo documentation 并开始使用它。

            【讨论】:

              【解决方案7】:

              mongodb 有很多行为,django-admin 用于关系数据库,如 postgresql

              您可以使用django-nonrel 创建 django 管理员,但它没有优化和良好。我认为您最好为您的应用程序创建自定义管理员。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-10-24
                • 2012-09-21
                • 1970-01-01
                • 2012-03-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多