The Admin Interface =================== In addition to a RESTful API service, sandman2 provides a HTML-based *admin interface* that allows you to view and manipulate the data in your tables. To access the admin interface, simply navigate to ``/admin`` once your service is started. On the left sidebar, you'll see a list of all the services you specified (i.e. the database tables you chose to include). Clicking one will show the contents of that table, paginated. You can edit a record by clicking on the pencil icon or delete a record using the trashcan icon. You may notice that *foreign keys* are displayed with their default Python representation (i.e. ````). To show foreign keys in a more useful way, you can define your own extensions to the classes reflected in the database and add a ``__unicode__`` member function. Imagine we have a simple blog application consisting of Blog, Post, and User models. As expected, each post belongs to a specific user and the model has the requisite foreign key to the User table. When we view a Post's assoicated user in the admin site, however, we see the following:: To provide a more useful representation in the admin, we *extend* the reflected class by creating a ``models.py`` file and adding functionality to our model classes. Deriving from ``sandman2.AutomapModel`` accomplishes this:: from sandman2 import AutomapModel class User(AutomapModel): """A user of the blogging application.""" __tablename__ = 'user' def __unicode__(self): return self.name class Blog(AutomapModel): """An online weblog.""" __tablename__ = 'blog' def __unicode__(self): return self.name class Post(AutomapModel): """An individual blog post.""" __tablename__ = 'post' def __unicode__(self): return self.title Notice that you can refer to attributes of the class that you know to be present (like ``user.name``) without defining the ``name`` column; all other columns/properties are reflected. You're meerly *extending* the existing model class.