List attributes

Using few callable helpers you can customize change list row and cell attributes based on object instance variables.

List header columns

As soon as you add suit to your apps, all your changelist table header columns will have specific field CSS class present.

For example for column country list header tag will look like this <th class="country-column">. Which means you can change it’s appearance using CSS.

.country-column .text, .country-column a {
    text-align: center;
}

List row attributes

To add html attributes like class or data to list rows, you must define suit_row_attributes callable (function). Callable receives object instance and the request as arguments and must return dict with attributes for current row.

Example:

from django.contrib.admin import ModelAdmin

class CountryAdmin(ModelAdmin):
    ...

    def suit_row_attributes(self, obj, request):
        return {'class': 'type-%s' % obj.type}

    # Or bit more advanced example
    def suit_row_attributes(self, obj, request):
        css_class = {
            1: 'success',
            0: 'warning',
            -1: 'error',
        }.get(obj.status)
        if css_class:
            return {'class': css_class, 'data': obj.name}

Note

Twitter bootstrap already provides handy CSS classes for table row styling: error, warning, info and success

Preview:

_images/list_attributes.png

List cell attributes

To add html attributes like class or data to list cells, you must define suit_cell_attributes callable (function). Callable receives object instance and column name as arguments and must return dict with attributes for current cell.

Example:

from django.contrib.admin import ModelAdmin

class CountryAdmin(ModelAdmin):
    ...

    def suit_cell_attributes(self, obj, column):
        if column == 'countries':
            return {'class': 'text-center'}
        elif column == 'name' and obj.status == -1:
            return {'class': 'text-error'}

Note

Twitter bootstrap already provides handy CSS classes for table cell alignment: text-left, text-center, text-right