Skip to content

Role Internals

Warning

The section below is largely intended for developers who may need to create data models of their own that implement a role field. Proceed at your own risk!

Any model that is intended to have a role field must use a nautobot.extras.models.roles.RoleField field for its foreign-key to the Role model. This field type will automatically assign a related_name for the reverse relationship back to the inheriting model's verbose plural name (e.g. devices).

RoleField model field

The RoleField field type is a subclass of django.db.models.ForeignKey.

This model field also emits its own form field to eliminate the requirement for a form field to be explicitly added to model forms.

RoleFilter filter field

Any filter that is intended to have a role field must inherit from nautobot.extras.filters.RoleModelFilterSetMixin. This will add a nautobot.extras.filters.RoleFilter to the filter, which allows filtering by the name or id of the role.

Form fields

Any filter form that is intended to have a role field must inherit from nautobot.extras.forms.RoleModelFilterFormMixin. This mixin adds a non-required, multiple-choice role filter field to the filter form.

Any bulk edit form that is intended to have a role field must inherit from nautobot.extras.forms.RoleModelBulkEditFormMixin. This mixin adds a non-required role field to the form, and constrains the eligible role choices to the object type being edited.

Table field

If you wish for a table to include a role column, your table must inherit from nautobot.extras.tables.RoleTableMixin. This includes a ColorColumn with the header role on the table.