SmartListView ================== The SmartListView provides the most bang for the buck, and was largely inspired by Django's own admin list API. It has the following options: **fields** Defines which fields should be displayed in the list, and in what order. The order of precedence to get the field value is first the View, by calling ``get_${field_name}``, then the object itself. This means you can easily define custom formatting of a field for a list view by simply declaring a new method:: class PostListView(SmartListView): model = Post fields = ('title', 'body') def get_body(self, obj): # only display first 50 characters of body return obj.body[:50] Note that if you'd like to have this be set at runtime, you can do so by overriding the ``derive_fields`` method **link_fields** Defines which fields should be turned into links to the object itself. By default, this is just the first item in the field list, but you can change it as you wish, including having more than one field. By default Smartmin will generate a link to the 'read' view for the object. You can modify what the link is by overriding ``lookup_field_link``:: class List(SmartListView): model = Country link_fields = ('name', 'currency') def lookup_field_link(self, context, field, obj): # Link our name and currency fields, each going to their own place if field == 'currency': return reverse('locales.currency_update', args=[obj.currency.id]) else: return reverse('locales.country_update', args=[obj.id]) Note that if you'd like to have this be set at runtime, you can do so by overriding the ``derive_link_fields`` method **search_fields** If set, then enables a search box which will search across the passed in fields. This should be a list or tuple. The values are used to build up a Q object, so you can specify standard Django manipulations if you'd like:: class List(SmartListView): model = User search_fields = ('username__icontains','first_name__icontains', 'last_name__icontains') Alternatively, if you want to customize the search even further, you can modify how the query is built by overriding the ``derive_queryset`` method. **template_name** The name of the template used to render this view. By default, this is set to ``smartmin/list.html`` but you can override it to whatever you'd like. **add_button** Whether an add button should be automatically added for this list view. Generally used with CRUDL.