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 export, "export" in actions without export, 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.
content_studio.E015readonly_fields entries that are not model fields. Inlines are checked too.
content_studio.E016prepopulated_fields that is not a mapping, fields or source fields that are not model fields, fields that cannot be prepopulated (DateTimeField, ForeignKey, OneToOneField, ManyToManyField) and fields in readonly_fields. Inlines are checked too.
content_studio.E017A reorder_field that is not a model field or, unless the studio overrides reorder, not a number field, and reorder_scope entries that are not model fields. Inlines are checked too.
content_studio.E018A BlockField without blocks, with entries in blocks that are not Block subclasses, with two blocks of the same name, with a negative min_num or max_num, or with min_num greater than max_num. Also block fields that a block cannot store: ManyToManyField, ManyMediaField, FileField and auto fields, a BlockField in a block inside a block (blocks inside blocks go one level deep), and relations to models that are not installed.
content_studio.E019Webhook settings: a WEBHOOK_ALLOWED_HOSTS that is not a list of host names, a WEBHOOK_MAX_ATTEMPTS that is not a positive whole number, a WEBHOOK_TIMEOUT that is not a positive number of seconds, or a WEBHOOK_DELIVERY_RETENTION that is not None or a positive whole number of days.
content_studio.E020An edit_header that is not a list, or entries in it that are not components, such as fields. Inlines are checked too.
content_studio.E021A duplicate_inlines that is not a list, or entries in it that are not in the studio's inlines.
content_studio.E022An export_fields that is not a list, or entries in it that are not field names or TableColumn objects, that appear twice, or that do not resolve to a model field, __str__ or a method on the studio.
content_studio.E023A PRESENCE_CACHE that is not a cache in CACHES.

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 or listed in readonly_fields, 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.
content_studio.W013An ordering that does not start with the reorder_field (after any reorder_scope fields), so moves do not match the order of the list. Inlines are checked too.
content_studio.W014allow_duplication on a singleton, or duplicate_inlines without allow_duplication. Neither has an effect.
content_studio.W015export_fields or allow_export on a singleton, an empty export_fields, or exported columns that are in exclude and are left out. None of them has an effect.
content_studio.W016Presence kept in a DummyCache, which keeps nothing, so the admin never shows who has an object open.
content_studio.W017Presence kept in a LocMemCache, which each process keeps for itself. A deployment check: manage.py check --deploy reports it.
content_studio.W018Password reset emails sent during the request, because no task backend runs Django tasks in a worker. A deployment check: manage.py check --deploy reports it.