SaltyCrane Blog — Notes on JavaScript and web development

Notes on trying the Django-nonrel MongoDB backend

http://www.allbuttonspressed.com/blog/django/2010/05/MongoDB-backend-for-Django-nonrel-released

Install and run MongoDB

$ cd ~/lib
$ curl http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz | tar zx 
$ ln -s mongodb-linux-i686-2010-06-08 mongodb 
$ mkdir -p ~/var/mongodb/db 
$ ~/lib/mongodb/bin/mongod --dbpath ~/var/mongodb/db 

Pip requirements file, ~/src/DjangoMongo/requirements.txt

pymongo
-e git+http://github.com/aparo/django-mongodb-engine.git#egg=django_mongodb_engine
-e hg+http://bitbucket.org/wkornewald/django-nonrel#egg=Django
-e hg+http://bitbucket.org/wkornewald/djangotoolbox#egg=djangotoolbox

Setup

$ cd ~/lib/python-environments 
$ virtualenv --no-site-packages --distribute djangomongo 
$ source ~/lib/python-environments/djangomongo/bin/activate 
$ cd ~/src/DjangoMongo
$ pip install -r requirements.txt 
$ django-admin.py startproject djangomongo 

Django settings file

Changes in ~/src/DjangoMongo/djangomongo/settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine.mongodb',
        'NAME': 'test',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '27017',
        'SUPPORTS_TRANSACTIONS': False,
    }
}
INSTALLED_APPS = (
    # ...
    'djangotoolbox',
)

Syncdb

Running syncdb gave me the following error.

$ python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django/django/core/management/base.py", line 218, in execute
    output = self.handle(*args, **options)
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django/django/core/management/base.py", line 347, in handle
    return self.handle_noargs(**options)
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django/django/core/management/commands/syncdb.py", line 84, in handle_noargs
    sql, references = connection.creation.sql_create_model(model, self.style, seen_models)
  File "/home/saltycrane/lib/python-environments/djangomongo/src/django-mongodb-engine/django_mongodb_engine/mongodb/creation.py", line 87, in sql_create_model
    opts = model._mongo_meta
AttributeError: type object 'Permission' has no attribute '_mongo_meta'</module>

Comments


#1 Andres Douglas commented on :

I think you might need the Permission backend from here: https://github.com/fhahn/django-permission-backend-nonrel