Skip to main content

🔎 System checks

Content Studio checks its configuration with Django's system check framework: on manage.py check, when the development server starts, on makemigrations and in your CI. An error means the configuration is broken and would fail at runtime, often silently. A warning means it works, but probably not as you intended. Neither stops the server from starting, but manage.py check exits with an error code.

Errors​

IDReports
content_studio.E001list_display set to a mapping. The list view's mapping belongs in list_item_display; list_display sets the table columns.
content_studio.E002list_views with an unknown view name.
content_studio.E003Two extensions with the same ID. Pass an extension_id to tell them apart.
content_studio.E004Two dashboard widgets with the same ID. Pass a widget_id to tell them apart.
content_studio.E005Two components with the same ID. Pass a component_id to tell them apart.
content_studio.E006table_display entries that are not field names or TableColumn objects, duplicate columns, columns that are not a model field, __str__ or a studio method, and formats that are not content_studio.formats classes. Inlines are checked too.
content_studio.E007Bulk actions: an actions list with unknown or duplicate names, a @bulk_action that replaces the built-in delete, or an unknown permission.
content_studio.E008soft_delete naming an unknown field, or a field that is not a nullable date or date and time.
content_studio.E009FOCAL_POINT_ATTR without a MEDIA_LIBRARY_MODEL, or naming a field that is missing or not a JSONField.
content_studio.E010Edit page fields that are not model fields, which would show as empty read-only boxes, and Field(widget=...) values that are not content_studio.widgets classes.
content_studio.E011search_fields, ordering and list_filter entries that are not a field, and list_item_display values that are not a field or a model method. Inlines are checked too.
content_studio.E012An inline's fk_name that is not a field, or not a foreign key to the parent model.
content_studio.E013Values in the site's default_widget_mapping or default_format_mapping that are not widget or format classes.
content_studio.E014A MEDIA_LIBRARY_ALLOWED_EXTENSIONS that is not a list of extensions without the dot, or a MEDIA_LIBRARY_MAX_UPLOAD_SIZE that is not a positive number of bytes.

Warnings​

IDReports
content_studio.W001A required model field missing from edit_main and edit_sidebar, so saving fails. Fields with a default, nullable or blank fields, and fields Content Studio fills in itself do not count.
content_studio.W002A required model field set to readonly=True on the edit page, so it can never be filled in and saving fails.
content_studio.W003A choice widget (SelectWidget, MultiSelectWidget, ToggleGroupWidget, RadioButtonWidget) on a field without choices, which would show empty.
content_studio.W004sortable_by names that are not table_display columns. Sorting only applies to table columns.
content_studio.W005list_filter entries that are not field names, such as filter classes or tuples. They are ignored.
content_studio.W006A model group with a model that is not registered with the site, which leaves an empty menu entry.
content_studio.W007A media item model without file, name or type, or a folder model without name or parent.
content_studio.W008A crop_image method on the site without a MEDIA_LIBRARY_MODEL, so it is never called.
content_studio.W009An empty LOGIN_BACKENDS setting, so nobody can log in.
content_studio.W010list_display used for the table columns. It works, but rename it to table_display. When both are set, list_display is ignored. Inlines are checked too.
content_studio.W011A studio that overrides get_list_display, which is never called. The list view uses get_list_item_display.
content_studio.W012A dashboard widget that does not subclass a built-in widget, which the admin cannot show.