Using few callable helpers you can customize change list row and cell attributes based on object instance variables.
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;
}
To add html attributes like class or data to list rows, you must define suit_row_attributes callable (function). Callable receives object instance as an argument 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):
return {'class': 'type-%s' % obj.type}
# Or bit more advanced example
def suit_row_attributes(self, obj):
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:
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 an 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