An introspective interface for Django and MongoDB
An introspective interface for Django and MongoDB.
Daniel Greenfeld (http://pydanny.com)
django-mongonaut is an introspective interface for working with MongoDB via mongoengine. Rather then attempt to staple this functionality into Django’s Admin interface, django-mongonaut takes the approach of rolling a new framework from scratch.
By writing it from scratch I get to avoid trying to staple ORM functionality on top of MongoDB, a NoSQL key/value binary-tree store.
Automatic introspection of mongoengine documents.
Ability to constrain who sees what and can do what.
Full control to add, edit, and delete documents
More awesome stuff! See http://django-mongonaut.readthedocs.org/en/latest/index.html#features
Made as easy as possible, setup is actually easier than django.contrib.admin. Furthermore, the only dependencies are mongoengine and pymongo. Eventually django-mongonaut will be able to support installations without mongoengine.
Download the right version per http://www.mongodb.org/downloads
Get mongoengine (and pymongo):
pip install mongoengine=>0.5.2
Get the code:
pip install django-mongonaut==0.2.19
Install the dependency in your settings.py:
INSTALLED_APPS = ( ... 'mongonaut', ... )
You will need the following also set up:
Add the mongonaut urls.py file to your urlconf file:
urlpatterns = patterns('', ... (r'^mongonaut/', include('mongonaut.urls')), ... )
django-mongonaut will let you duplicate much of what django.contrib.admin gives you, but in a way more suited for MongoDB. Still being implemented, but already works better than any other MongoDB solution for Django. A simple example:
# myapp/mongoadmin.py # Import the MongoAdmin base class from mongonaut.sites import MongoAdmin # Import your custom models from blog.models import Post # Instantiate the MongoAdmin class # Then attach the mongoadmin to your model Post.mongoadmin = MongoAdmin()
All the documentation for this project is hosted at http://django-mongonaut.rtfd.org.
pymongo (comes with mongoengine)
sphinx (optional - for documentation generation)
Support this project!
I am making the world better by donating everything I earn via gittip to efforts that help other people learn Python. Go to gittip to donate!
Or you can hire me to perform dedicated work on this package.
# 0.2.19 (18/07/2013)
Use Select widget if choices defined for a field (@jeff-ogmento )
Use ordering if defined in MongoAdmin class (@jeff-ogmento )
Respect order of list_fields in admin class (@jeff-ogmento )
Fixed “django.conf.urls.defaults is deprecated” (@swaroopch)
Fix search (@swaroopch)
Make index page also password-protected (@swaroopch)
# 0.2.18 Various things
# 0.2.17 Can now add, and modify ListFields and Embedded document fields @garrypolley
# 0.2.16 ListFields can be added and updated @garrypolley
# 0.2.15 Editing or Adding a document does not require all fields to be filled out @garrypolley
# 0.2.14 Fixed pymongo version thanks to @marsam and pagination fixes thanks to @jerzyk
# 0.2.13 Fields validation and type conversion thanks to @jerzyk
# 0.2.12 Bump to mongoengine 0.6.2, PEP-8, and fixing the is_authenticated problem in default permission controls.
# 0.2.11 Change style over to Twitter Bootstrap 2.0.0, Add templates to manifest
# 0.2.10 Proper Reference field saves, more permission fixes
# 0.2.9 Permissions correction - Do remember this is in ALPHA!!!
# 0.2.8 Test components, permission controls in the views, first pass on deletes, Reference field display and some really bad SELECT widget implementations on it.
# authenticated Permissions refactor, list_fields implementation, and ability to add new documents
# 0.2.6 Major performance enhancement of the DocumentListView
# 0.2.5 Added EmbeddedDocument to form views
# 0.2.4 Installation fix
# 0.2.3 Installation fix
# 0.2.2 Supporting of Boolean and Datetime fields and search to boot
0.2.1 Project description fix
0.2.0 basic form saves, pagination, and formatting
0.1.0 Inception and fundamentals
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.