用Mongokit ODM将Django连接到MongoDB

django-mongokit的Python项目详细描述


django mongokit
==


作者:peter bengtsson,mail@peterbe.com,2010-2011


license:new bsd license


e
[mongokit](http://bitbucket.org/namlook/mongokit/wiki/home)如果您希望使用mongodb而不是关系数据库,那么可以为django定义模型。此工具包处理样板文件,并使Mongokit文档在注册时更好地与django一起工作,因为它定义了一个
``u meta`类属性。


installation
----


usage/configuration
----

首先,您需要定义数据库的名称,但要在"settings.databases"指令中定义。下面是一个示例:

databases={
'默认值':{
'引擎':'django.db.backends.sqlite3',
'名称':'example-sqlite3.db',
},
'mongodb':{
'引擎':'django-mongokit.mongodb',
'名称':'example',
},
}


请注意,"default"和"mongodb"是此设置中的必需键。
您可以更改的是"databases['mongodb']下的"name"部分。


在django中,您可能习惯于这样做:

类对话(models.model):
topic=models.charfield(max_length=250)
date=models.datetimefield()

structure={
"topic":unicode,
"date":datetime.datetime
}


这个基类为您提供了一些开箱即用的好处,这将使使用mongokit文档(如"pk")更容易。
这将以字节字符串形式返回实例的"objectid",其中
对于映射URL和按ID查找文档非常有用。对于
示例:

>t>>database=conn['example']
>;>collection=database['talk s']
>;>talk=collection.talk.find_one()
>;>talk
'4b87c6b19d40b3375a00001'

r/>>;>;交谈。<;meta talk"交谈","交谈">;
>;>;交谈。"交谈"
>;>;交谈。"交谈"

使用django orm:



class talk(models.model):

class meta:
verbose_name_polarial=u"talkings"


使用"django_mongokit"文档时会触发有限的信号集。这些是:

*``pre-delete``
*``post-delete``
*``pre-save``
*``post-save``



examples
--

`django mongokit`附带了一个示例项目和一个执行一些基本操作的示例应用程序
。对于如何使用"django mongokit"来查看这个示例应用程序来说,这可能是一个很好的灵感来源。



--------


`django mongokit'是为django 1.2构建的,具有多数据库支持
,但是您可以使用"django mongokit"-Mongokit`in Django 1.1(在Django测试
1.1.1)作为二级数据库。例如,您可能希望
继续在mysql/posgresql/oracle中运行应用程序向MongoDB写入数据的G应用程序。
与使用django 1.2的不同之处在于,您需要指定一个名为"mongou-database-name"的
设置,如下所示:


mongou-database-name="example"


document forms
----

,称为documentform。

从Mongokit的"structure"属性,以及相关的"required"字段和"default"值,并为此文档生成相关的表单字段。

您可以自定义"document form",就像自定义"modelform"一样:


class talkform(documentform):

def clean_when(self):
"
"从datefield中获取一个日期对象并创建一个日期时间对象。
"
"w=self.clean_data['when']
when=datetime.datetime(w.year,w.month,w.day,0,0)
r当

class meta:
document=talk
fields=['topic','tags']
` bool`,`float`,`unicode`,`date time.datetime`,`datetime.date`,`datetime.time`,`list`和`dict`(`list`和`dict`显示为json格式的可编辑字符字段)。documentforms目前不支持嵌套文档或嵌套字典键。

documentforms目前不支持mongokit验证。




"django_mongokit.mongodb"不是可用的数据库后端。
尝试使用django.db.backends.xxx,其中xxx是:
"dummy"、"mysql"、"oracle"、"postgresql"、"postgresql_psycopg2"、
"sqlite3"
错误是:没有名为mongokit的模块

,这只是因为没有安装"mongokit"。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素