Skip to content

Tables

NetBox employs the django-tables2 library for rendering dynamic object tables. These tables display lists of objects, and can be sorted and filtered by various parameters.

NetBoxTable

To provide additional functionality beyond what is supported by the stock Table class in django-tables2, NetBox provides the NetBoxTable class. This custom table class includes support for:

  • User-configurable column display and ordering
  • Custom field & custom link columns
  • Automatic prefetching of related objects

It also includes several default columns:

  • pk - A checkbox for selecting the object associated with each table row (where applicable)
  • id - The object's numeric database ID, as a hyperlink to the object's view (hidden by default)
  • actions - A dropdown menu presenting object-specific actions available to the user

Example

# tables.py
import django_tables2 as tables
from netbox.tables import NetBoxTable
from .models import MyModel

class MyModelTable(NetBoxTable):
    name = tables.Column(
        linkify=True
    )
    ...

    class Meta(NetBoxTable.Meta):
        model = MyModel
        fields = ('pk', 'id', 'name', ...)
        default_columns = ('pk', 'name', ...)

Table Configuration

The NetBoxTable class features dynamic configuration to allow users to change their column display and ordering preferences. To configure a table for a specific request, simply call its configure() method and pass the current HTTPRequest object. For example:

table = MyModelTable(data=MyModel.objects.all())
table.configure(request)

This will automatically apply any user-specific preferences for the table. (If using a generic view provided by NetBox, table configuration is handled automatically.)

Columns

The table column classes listed below are supported for use in plugins. These classes can be imported from netbox.tables.columns.

BooleanColumn

Bases: tables.Column

Custom implementation of BooleanColumn to render a nicely-formatted checkmark or X icon instead of a Unicode character.

ChoiceFieldColumn

Bases: tables.Column

Render a model's static ChoiceField with its value from get_FOO_display() as a colored badge. Background color is set by the instance's get_FOO_color() method, if defined.

ColorColumn

Bases: tables.Column

Display an arbitrary color value, specified in RRGGBB format.

ColoredLabelColumn

Bases: tables.TemplateColumn

Render a related object as a colored label. The related object must have a color attribute (specifying an RRGGBB value) and a get_absolute_url() method.

ContentTypeColumn

Bases: tables.Column

Display a ContentType instance.

ContentTypesColumn

Bases: tables.ManyToManyColumn

Display a list of ContentType instances.

MarkdownColumn

Bases: tables.TemplateColumn

Render a Markdown string.

TagColumn

Bases: tables.TemplateColumn

Display a list of Tags assigned to the object.

TemplateColumn

Bases: tables.TemplateColumn

Overrides django-tables2's stock TemplateColumn class to render a placeholder symbol if the returned value is an empty string.

__init__(export_raw=False, **kwargs)

Parameters:

Name Type Description Default
export_raw

If true, data export returns the raw field value rather than the rendered template. (Default: False)

False