我是Django的新手,Mongodb似乎非常酷,而且我有一些 问题!我正在使用Django nonrel和Django Mongodb引擎。 我希望我不会犯太多错误:)。
1)是Django用户认证系统和Django会话 系统工作正常?因为我在allbuttonspressed.com上看到了 身份验证和管理界面存在问题 部分与第三方书面认证后端让我思考 django身份验证系统不能与mongodb一起使用:
如果添加,您只能在管理界面中编辑用户 “djangotoolbox”到您的INSTALLED_APPS。否则你会得到一个 有关不受支持的查询的异常,需要JOIN。
Florian Hahn还编写了一个身份验证后端 非关系后端的权限支持。你应该使用它 如果你想使用Django的权限系统,则后端。
2)如果身份验证系统正常,我该如何添加字段 用户模型?我在Django文档上看到了实现这一目标的方法 要去的是用OnetoOnefield定义一个模型到用户模型 (“user = models.OneToOneField(User)”)并定义我们的其他字段 想要那个模特。我认为它必须是SQL的正确方法 数据库。但是像Nolong这样的mongodb对我来说似乎不对,如果 我没弄错,它创建了一个新的集合并放入每个文档 用于将文档链接到用户文档的用户字段 集合(完全像外键)。这似乎不是一个 NoSQL方式(嗯,这只是我的感觉,但因为我只是一个 初学者我可能错了,不要犹豫纠正我)。有没有 建议直接向用户模型添加字段的方法吗?
3)当在Django中使用Model时,它会将所有字段放入 文件,即使它们是空的吧?这不是浪费空间 如果它们是空的,请在文档中写下很多字段名称?
4)这个问题更多的是关于Mongodb本身而不是引擎,但我会 不管怎么说,你可能会得到答案:多少空间呢 采取索引集合中的字段?
没想到我会写这么多,我希望你们中的一些人有 有勇气读我!
提前致谢,
Nolhian
答案 0 :(得分:1)
因为我不使用MongoDB,只有部分答案。
我在Google AppEngine项目中使用django-nonrel。我正在使用其他自定义应用程序,如“djangotoolbox”,以及GAE的一些后端。管理面板和标准Django身份验证工作得非常好。我怀疑MongoDB是一样的(就像你提供的报价中提到的那样)
你是对的。标准方法绝对适用于关系数据库,但对NoSQL数据库可能无效或无效。典型的情况是将数据复制到另一个表,因此您不必执行JOIN。我认为您可以简单地将User模型子类化并将您的字段添加到自定义模型(docs)。