API¶
The following are advanced configuration features for django-mongonaut. Using them requires you to subclass the mongonaut.MongoAdmin class, then instantiate and attach your subclass as an attribute to the MongoEngine model.
Note
Future versions of mongonaut will allow you to work with pymongo collections without mongoengine serving as an intermediary.
MongoAdmin Objects¶
class MongoAdmin¶
The MongoAdmin class is the representation of a model in the mongonaut interface. These are stored in a file named mongoadmin.py in your application. Let’s take a look at a very simple example of the MongoAdmin:
# myapp/mongoadmin.py
# Import the MongoAdmin base class
from mongonaut.sites import MongoAdmin
# Import your custom models
from blog.models import Post
# Subclass MongoAdmin and add a customization
class PostAdmin(MongoAdmin):
# Searches on the title field. Displayed in the DocumentListView.
search_fields = ('title',)
# provide following fields for view in the DocumentListView
list_fields = ('title', "published", "pub_date")
# Instantiate the PostAdmin subclass
# Then attach PostAdmin to your model
Post.mongoadmin = PostAdmin()
MongoAdmin Options¶
The MongoAdmin is very flexible. It has many options for dealing with customizing the interface. All options are defined on the MongoAdmin subclass:
has_add_permission¶
default:
# myapp/mongoadmin.py
class PostAdmin(MongoAdmin):
def has_add_permission(self, request):
""" Can add this object """
return request.user.is_authenticated and request.user.is_active and request.user.is_staff)
has_edit_permission¶
default:
# myapp/mongoadmin.py
class PostAdmin(MongoAdmin):
def has_delete_permission(self, request):
""" Can delete this object """
return request.user.is_authenticated and request.user.is_active and request.user.is_admin()
has_edit_permission¶
default:
# myapp/mongoadmin.py
class PostAdmin(MongoAdmin):
def has_edit_permission(self, request):
""" Can edit this object """
return request.user.is_authenticated and request.user.is_active and request.user.is_staff)
has_view_permission¶
default:
# myapp/mongoadmin.py
class PostAdmin(MongoAdmin):
def has_view_permission(self, request):
""" Can view this object """
return request.user.is_authenticated and request.user.is_active
list_fields¶
default: Mongo _id
Accepts an iterable of string fields that matches fields in the associated model. Displays these fields as columns.
# myapp/mongoadmin.py
class PostAdmin(MongoAdmin):
# provide following fields for view in the DocumentListView
list_fields = ('title', "published", "pub_date")
search_fields¶
default: []
Accepts an iterable of string fields that matches fields in the associated model. Displays a search field in the DocumentListView. Performs an ‘icontains’ search with an ‘OR’ between evaluations.
# myapp/mongoadmin.py
class PostAdmin(MongoAdmin):
# Searches on the title field. Displayed in the DocumentListView.
search_fields = ('title',)