NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5051 most downloaded on PyPI
A Django content management system.
Last release 1 months ago
25 Aug 2026
Release timing varies
gaps range from 9 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
13 years old
300 releases · first in 2014
CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
CVE-2020-11001 - prevent XSS attack via page revision comparison view (Vlad Gerasimenko, Matt Westcott)
CVE-2020-11001 - prevent XSS attack via page revision comparison view (Vlad Gerasimenko, Matt Westcott)
One column per quarter.
Django 3.0 support (Matt Westcott, Mads Jensen)
get_document_model_string function (Andrey Smirnov)ancestors field to the pages endpoint in admin API (Karl Hobley)Page & Site models (Andreas Bernacca){{ block.super }} example to ModelAdmin customisation in documentation (Dan Swain)sensitive_post_parameters on password reset form (Dan Braghis)WAGTAILEMBEDS_RESPONSIVE_HTML setting to remove automatic addition of responsive-object around embeds (Kalob Taulien)get_document_model location so it can be imported when Models are not yet loaded (Andrey Smirnov)block.super for extra_js & extra_css (Timothy Bautista)FieldRowPanel with a heading (Andreas Bernacca)file_size and file_hash now updated when Document file changed (Andreas Bernacca)verbose_name_plural to form submission model (Janneke Janssen)update_index failures and incorrect front-end rendering on blank TableBlock (Carlo Ascani)2.1, 2.2, 3.0
3.5, 3.6, 3.7, 3.8
2.7 LTS
2.0, 2.1, 2.2
3.5, 3.6, 3.7, 3.8
Django 3.0 support (Matt Westcott, Mads Jensen)
get_document_model_string function (Andrey Smirnov)ancestors field to pages endpoint in admin API (Karl Hobley)Page & Site models (Andreas Bernacca)sensitive_post_parameters on password reset form (Dan Braghis)WAGTAILEMBEDS_RESPONSIVE_HTML setting to remove automatic addition of responsive-object around embeds (Kalob Taulien)get_document_model location so it can be imported when Models are not yet loaded (Andrey Smirnov)block.super for extra_js & extra_css (Timothy Bautista)file_size and file_hash not updated when Document file changed (Andreas Bernacca)update_index failures and incorrect front-end rendering on blank TableBlock (Carlo Ascani)CVE-2020-15118 - prevent HTML injection through form field help text (Timothy Bautista, Matt Westcott)
CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
CVE-2020-11001 - prevent XSS attack via page revision comparison view (Vlad Gerasimenko, Matt Westcott)
CVE-2020-11001 - prevent XSS attack via page revision comparison view (Vlad Gerasimenko, Matt Westcott)
Fix: Management command startup checks under ManifestStaticFilesStorage no longer fail if collectstatic has not been run first (Alex Tomkins)
ManifestStaticFilesStorage no longer fail if collectstatic has not been run first (Alex Tomkins)Improved StreamField design (Bertrand Bordage)
construct_page_listing_buttons hook (Michael van Tellingen)update_all_types workaround, upgrade minimum release to 6.4.0 or above (Jonathan Liuti)WAGTAIL_EMAIL_MANAGEMENT_ENABLED setting to determine whether users can change their email address (Janne Alatalo)WAGTAILDOCS_SERVE_METHOD setting to determine how document downloads will be linked to and served (Tobias McNulty, Matt Westcott)WAGTAIL_MODERATION_ENABLED setting to enable / disable the 'Submit for Moderation' option (Jacob Topp-Mugglestone)register_page_action_menu_item and construct_page_action_menu hooks to override the default menu action (Rahmi Pruitt, Matt Westcott)WAGTAILIMAGES_MAX_IMAGE_PIXELS limit now takes the number of animation frames into account (Karl Hobley)pageurl and slugurl tags no longer fail when request.site is None (Samir Shah)StreamBlock.get_prep_value (Colin Klein)DraftailRichTextArea is no longer treated as a hidden field by Django's form logic (Sergey Fedoseev)DEFAULT_AUTHENTICATION_CLASSES setting no longer breaks the page explorer menu and admin API (Matt Westcott)Wagtail supports PostgreSQL, MySQL, MariaDB and SQLite (with JSON1) as database backends.
This upgrade guide is based on How to upgrade Django to a newer version .
[ 1 ] ( 1 , 2 ) Added in a patch release
Wagtail Space NL
12 – 14 June 2024 in Arnhem, The Netherlands
Wagtail Space US
20 – 22 June 2024 in Philadelphia, USA ✕
manage.py collectstatic no longer breaks with ManifestStaticFilesStorage (Matt Westcott)
Changes from 2.7rc1:
manage.py collectstatic no longer breaks with ManifestStaticFilesStorage (Matt Westcott)DEFAULT_AUTHENTICATION_CLASSES setting no longer breaks the page explorer menu and admin API (Matt Westcott)Improved StreamField design (Bertrand Bordage)
construct_page_listing_buttons hook (Michael van Tellingen)update_all_types workaround, upgrade minimum release to 6.4.0 or above (Jonathan Liuti)WAGTAIL_EMAIL_MANAGEMENT_ENABLED setting to determine whether users can change their email address (Janne Alatalo)WAGTAILDOCS_SERVE_METHOD setting to determine how document downloads will be linked to and served (Tobias McNulty, Matt Westcott)WAGTAIL_MODERATION_ENABLED setting to enable / disable the 'Submit for Moderation' option (Jacob Topp-Mugglestone)register_page_action_menu_item and construct_page_action_menu hooks to override the default menu action (Rahmi Pruitt, Matt Westcott)WAGTAILIMAGES_MAX_IMAGE_PIXELS limit now takes the number of animation frames into account (Karl Hobley)pageurl and slugurl tags no longer fail when request.site is None (Samir Shah)StreamBlock.get_prep_value (Colin Klein)DraftailRichTextArea is no longer treated as a hidden field by Django's form logic (Sergey Fedoseev)Fix: Altering Django REST Framework's DEFAULT_AUTHENTICATION_CLASSES setting no longer breaks the page explorer menu and admin API (Matt Westcott)
DEFAULT_AUTHENTICATION_CLASSES setting no longer breaks the page explorer menu and admin API (Matt Westcott)Prevent search indexing failures on Postgres 9.4 and Django >= 2.2.1 (Matt Westcott)
Fix: Prevent Javascript errors caused by unescaped quote characters in translation strings (Matt Westcott)
Added support for short_description for field labels in modeladmin's InspectView (Wesley van Lee)
short_description for field labels in modeladmin's InspectView (Wesley van Lee)image template tag (Deniz Dogan)branding_title template block for the admin title prefix (Dillen Meijboom)process_child_object and exclude_fields arguments to Page.copy() to make it easier for third-party apps to customise copy behavior (Karl Hobley)Page.with_content_json(), allowing revision content loading behaviour to be customised on a per-model basis (Karl Hobley)construct_settings_menu hook (Jordan Bauer, Quadric)dir attribute for the active language (Andreas Bernacca)--chunk_size argument on ./manage.py update_index (Seb Brown)repr method (Alex Tomkins)exclude_fields_in_copy (Karl Hobley)is_stored_locally method to AbstractDocument (jonny5532)Added support for short_description for field labels in modeladmin's InspectView (Wesley van Lee)
short_description for field labels in modeladmin's InspectView (Wesley van Lee)image template tag (Deniz Dogan)branding_title template block for the admin title prefix (Dillen Meijboom)process_child_object and exclude_fields arguments to Page.copy() to make it easier for third-party apps to customise copy behavior (Karl Hobley)Page.with_content_json(), allowing revision content loading behaviour to be customised on a per-model basis (Karl Hobley)construct_settings_menu hook (Jordan Bauer, Quadric)dir attribute for the active language (Andreas Bernacca)--chunk_size argument on ./manage.py update_index (Seb Brown)repr method (Alex Tomkins)exclude_fields_in_copy (Karl Hobley)is_stored_locally method to AbstractDocument (jonny5532)Fix: Delay dirty form check to prevent "unsaved changes" warning from being wrongly triggered (Thibaud Colas)
Fix: Prevent crash when comparing StructBlocks in revision history (Adrian Turjak, Matt Westcott)
Django 2.2 support (Matt Westcott, Andy Babic)
|richtext filter is applied to a non-string value (mukesh5)search_auto_update attribute (Karl Hobley)<p> and <br> elements with attributes (Matt Westcott)manage.py wagtail_update_index alias to avoid clashes with update_index commands from other packages (Matt Westcott)target_model argument on PageChooserBlock to page_type (Loic Teixeira)edit_handler and panels can now be defined on a ModelAdmin definition (Thomas Kremmel)TAG_LIMIT to limit number of tags that can be added to any taggit model (Mani)ModelAdmin to documentation (LB (Ben Johnston), Andy Babic){% pageurl %} (Arthur Holzner)blockquote, superscript, subscript, strikethrough, code (Md Arifin Ibne Matin)max_count_per_parent option on page models to limit the number of pages of a given type that can be created under one parent page (Wesley van Lee)StreamField field blocks now accept a validators argument (Tom Usher)** for bold, _ for italic, etc. (Thibaud Colas)external and email links (Md Arifin Ibne Matin)SERVER_PORT to 443 in Page.dummy_request() for HTTPS sites (Sergey Fedoseev)Host header of Page.dummy_request() (Sergey Fedoseev)InlinePanel no longer count towards max_num when disabling the 'add' button (Todd Dembrey, Thibaud Colas)postgres_search queries (Hammy Goonan)routablepageurl tag now correctly omits domain part when multiple sites exist at the same root (Gassan Gousseinov)send_mail now correctly uses the html_message kwarg for HTML messages (Tiago Requeijo)max_count (Andy Babic)get_admin_display_title methods on parent page and breadcrumb (Haydn Greatnews)zh_Hans and zh_Hant (Matt Westcott)Embed.thumbnail_url to 255 characters (Kevin Howbrook)Django 2.2 support (Matt Westcott, Andy Babic)
|richtext filter is applied to a non-string value (mukesh5)search_auto_update attribute (Karl Hobley)<p> and <br> elements with attributes (Matt Westcott)manage.py wagtail_update_index alias to avoid clashes with update_index commands from other packages (Matt Westcott)target_model argument on PageChooserBlock to page_type (Loic Teixeira)edit_handler and panels can now be defined on a ModelAdmin definition (Thomas Kremmel)TAG_LIMIT to limit number of tags that can be added to any taggit model (Mani)ModelAdmin to documentation (LB (Ben Johnston), Andy Babic){% pageurl %} (Arthur Holzner)blockquote, superscript, subscript, strikethrough, code (Md Arifin Ibne Matin)max_count_per_parent option on page models to limit the number of pages of a given type that can be created under one parent page (Wesley van Lee)StreamField field blocks now accept a validators argument (Tom Usher)** for bold, _ for italic, etc. (Thibaud Colas)external and email links (Md Arifin Ibne Matin)SERVER_PORT to 443 in Page.dummy_request() for HTTPS sites (Sergey Fedoseev)Host header of Page.dummy_request() (Sergey Fedoseev)InlinePanel no longer count towards max_num when disabling the 'add' button (Todd Dembrey, Thibaud Colas)postgres_search queries (Hammy Goonan)routablepageurl tag now correctly omits domain part when multiple sites exist at the same root (Gassan Gousseinov)send_mail now correctly uses the html_message kwarg for HTML messages (Tiago Requeijo)max_count (Andy Babic)get_admin_display_title methods on parent page and breadcrumb (Haydn Greatnews)zh_Hans and zh_Hant (Matt Westcott)Added support for Python 3.7 (Matt Westcott)
max_count option on page models to limit the number of pages of a particular type that can be created (Dan Braghis)file_hash field to documents (Karl Hobley, Dan Braghis)copy() methods in Page subclasses to be called from the page copy view (Robert Rollins)LocaleMiddleware (Benjamin Bach)functools.partial() instead of django.utils.functional.curry() (Sergey Fedoseev)before_move_page and after_move_page hooks (Maylon Pedroso)PageQuerySet.type_q can now be merged with | (Brady Moe)rel="noopener noreferrer" to target blank links (Anselm Bradford)Added support for Python 3.7 (Matt Westcott)
max_count option on page models to limit the number of pages of a particular type that can be created (Dan Braghis)file_hash field to documents (Karl Hobley, Dan Braghis)copy() methods in Page subclasses to be called from the page copy view (Robert Rollins)LocaleMiddleware (Benjamin Bach)functools.partial() instead of django.utils.functional.curry() (Sergey Fedoseev)before_move_page and after_move_page hooks (Maylon Pedroso)PageQuerySet.type_q can now be merged with | (Brady Moe)rel="noopener noreferrer" to target blank links (Anselm Bradford)Added support for Django 2.1 (Ryan Verner, Matt Westcott)
download_url field to images in the API (Michael Harrison)wagtail.admin.forms to make it less prone to circular imports (Matt Westcott)Added support for Django 2.1 (Ryan Verner, Matt Westcott)
download_url field to images in the API (Michael Harrison)wagtail.admin.forms to make it less prone to circular imports (Matt Westcott)Added support for Django 2.1 (Ryan Verner, Matt Westcott)
download_url field to images in the API (Michael Harrison)wagtail.admin.forms to make it less prone to circular imports (Matt Westcott)Fix: Seek to the beginning of image files when uploading, to restore compatibility with django-storages Google Cloud and Azure backends (Mikalai Radch
Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
Added faceted search using the .facet() method (Karl Hobley)
.facet() method (Karl Hobley)annotate_score support to PostgreSQL search backend (Bertrand Bordage){% slugurl %} template tag is now site-aware (Samir Shah)file_size field to documents (Karl Hobley)file_hash field to images (Karl Hobley)defer flag to PageQuerySet.specific (Karl Hobley)eval(), for better CSP compliance (Matt Westcott)Image.get_file_size (Andrew Plummer)Added faceted search using the .facet() method (Karl Hobley)
.facet() method (Karl Hobley)annotate_score support to PostgreSQL search backend (Bertrand Bordage){% slugurl %} template tag is now site-aware (Samir Shah)file_size field to documents (Karl Hobley)file_hash field to images (Karl Hobley)defer flag to PageQuerySet.specific (Karl Hobley)eval(), for better CSP compliance (Matt Westcott)Image.get_file_size (Andrew Plummer)Added faceted search using the .facet() method (Karl Hobley)
.facet() method (Karl Hobley)annotate_score support to PostgreSQL search backend (Bertrand Bordage){% slugurl %} template tag is now site-aware (Samir Shah)file_size field to documents (Karl Hobley)file_hash field to images (Karl Hobley)defer flag to PageQuerySet.specific (Karl Hobley)eval(), for better CSP compliance (Matt Westcott)Image.get_file_size (Andrew Plummer)Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
Fix: Bundle the l18n package to avoid installation issues on systems with a non-Unicode locale (Matt Westcott)
Fix: Site.get_site_root_paths() preferring other sites over the default when some sites share the same root_page (Andy Babic)
Add HelpPanel to add HTML within an edit form (Keving Chung)
HelpPanel to add HTML within an edit form (Keving Chung)assert statements from Wagtail API (Kim Chee Leong)jquery-datetimepicker dependency to make Wagtail more CSP-friendly (unsafe-eval) (Mike Kamermans)wagtail command on Python <3.4 (Matt Westcott)update_index management command now accepts a --chunk_size option to determine the number of items to load at once (Dave Bell)register_account_menu_item to add new account preference items (Michael van Tellingen)wagtail_icon template tag to facilitate making admin icons accessible (Sander Tuit)ALLOWED_HOSTS in the project template to allow any host in development (Tom Dyson)WAGTAILFRONTENDCACHE_LANGUAGES setting to specify the languages whose URLs are to be purged when using i18n_patterns (PyMan Claudio Marinozzi)extra_footer_actions template blocks for customising the add/edit page views (Arthur Holzner)WAGTAILADMIN_RICH_TEXT_EDITORS setting (Todd Dembrey)UserAttributeSimilarityValidator is now correctly enforced on user creation / editing forms (Tim Heap)get_admin_display_title methods (Kim Chee Leong)get_admin_display_title methods (Arthur Holzner, Wietze Helmantel, Matt Westcott)update_index for ParentalManyToManyField to fix crash (Tim Kamanin)get_admin_display_title methods when sorting <100 pages (Matt Westcott)Fix usage URL on the document edit page (Jérôme Lebleu)
Changes since 2.1rc1:
form_fields_exclude on models with explicit panel definitionsAdd HelpPanel to add HTML within an edit form (Kevin Chung)
HelpPanel to add HTML within an edit form (Kevin Chung)assert statements from Wagtail API (Kim Chee Leong)jquery-datetimepicker dependency to make Wagtail more CSP-friendly (unsafe-eval) (Mike Kamermans)wagtail command on Python <3.4 (Matt Westcott)update_index management command now accepts a --chunk_size option to determine the number of items to load at once (Dave Bell)register_account_menu_item to add new account preference items (Michael van Tellingen)wagtail_icon template tag to facilitate making admin icons accessible (Sander Tuit)ALLOWED_HOSTS in the project template to allow any host in development (Tom Dyson)WAGTAILFRONTENDCACHE_LANGUAGES setting to specify the languages whose URLs are to be purged when using i18n_patterns (PyMan Claudio Marinozzi)extra_footer_actions template blocks for customising the add/edit page views (Arthur Holzner)WAGTAILADMIN_RICH_TEXT_EDITORS setting (Todd Dembrey)UserAttributeSimilarityValidator is now correctly enforced on user creation / editing forms (Tim Heap)get_admin_display_title methods (Kim Chee Leong)get_admin_display_title methods (Arthur Holzner, Wietze Helmantel, Matt Westcott)update_index for ParentalManyToManyField to fix crash (Tim Kamanin)get_admin_display_title methods when sorting <100 pages (Matt Westcott)Fix: Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
Added error notification when running the wagtail command on Python <3.4 (Matt Westcott)
wagtail command on Python <3.4 (Matt Westcott)WAGTAILADMIN_RICH_TEXT_EDITORS setting (Todd Dembrey)UserAttributeSimilarityValidator is now correctly enforced on user creation / editing forms (Tim Heap)Added support for Django 2.0 (Matt Westcott, Karl Hobley, LB (Ben Johnston), Mads Jensen)
wagtail.contrib.api) to an external app (https://github.com/wagtail/wagtailapi_legacy) (Karl Hobley)construct_explorer_page_queryset hook and ModelAdmin.exclude_from_explorer property (Tim Heap)before_create_user, after_create_user, before_delete_user, after_delete_user, before_edit_user, after_edit_user (Jon Carmack)exclude_fields_in_copy property to Page to define fields that should not be included on page copy (LB (Ben Johnston)){% image %} tag syntax (LB (Ben Johnston))render_landing_page method to AbstractForm to be easily overridden and pass form_submission to landing page context (Stein Strindhaug)heading kwarg to InlinePanel to allow heading to be set independently of button label (Adrian Turjak)StructBlock can now be customised (LB (Ben Johnston))bgcolor image operation (Karl Hobley)WAGTAILADMIN_USER_LOGIN_FORM setting for overriding the admin login form (Mike Dingjan)WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS setting to determine whether superusers are included in moderation email notifications (Bruno Alla)get_template methods for overriding templates in instances (Christopher Bledsoe).richtext CSS class in favour of more explicit extension points (Thibaud Colas)assertCanCreate (Tim Heap, Matt Westcott)QuerySet when searching with order_by_relevance=False (Bertrand Bordage)modeladmin_register as a decorator no longer replaces the decorated class with None (Tim Heap){% routablepageurl %} template tag no longer generates invalid URLs when the WAGTAIL_APPEND_SLASH setting was set to False (Venelin Stoykov)FormSubmissionsPanel now recognises custom form submission classes (LB (Ben Johnston))TableBlock context menu (LB (Ben Johnston))ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)__in filter (Karl Hobley, Matt Westcott)__isnull filters no longer fail on Elasticsearch 5 (Karl Hobley)SearchField and a FilterField (Matt Westcott)h2 elements (Thibaud Colas)1.11, 2.0
3.4, 3.5, 3.6
1.13 LTS
1.8, 1.10, 1.11
2.7, 3.4, 3.5, 3.6
1.12 LTS
1.8, 1.10, 1.11
2.7, 3.4, 3.5, 3.6
Added support for Django 2.0 (Matt Westcott, Karl Hobley, LB (Ben Johnston), Mads Jensen)
wagtail.contrib.api) to an external app (https://github.com/wagtail/wagtailapi_legacy) (Karl Hobley)construct_explorer_page_queryset hook and ModelAdmin.exclude_from_explorer property (Tim Heap)before_create_user, after_create_user, before_delete_user, after_delete_user, before_edit_user, after_edit_user (Jon Carmack)exclude_fields_in_copy property to Page to define fields that should not be included on page copy (LB (Ben Johnston)){% image %} tag syntax (LB (Ben Johnston))render_landing_page method to AbstractForm to be easily overridden and pass form_submission to landing page context (Stein Strindhaug)heading kwarg to InlinePanel to allow heading to be set independently of button label (Adrian Turjak)StructBlock can now be customised (LB (Ben Johnston))bgcolor image operation (Karl Hobley)WAGTAILADMIN_USER_LOGIN_FORM setting for overriding the admin login form (Mike Dingjan)WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS setting to determine whether superusers are included in moderation email notifications (Bruno Alla)get_template methods for overriding templates in instances (Christopher Bledsoe).richtext CSS class in favour of more explicit extension points (Thibaud Colas)assertCanCreate (Tim Heap, Matt Westcott)QuerySet when searching with order_by_relevance=False (Bertrand Bordage)modeladmin_register as a decorator no longer replaces the decorated class with None (Tim Heap){% routablepageurl %} template tag no longer generates invalid URLs when the WAGTAIL_APPEND_SLASH setting was set to False (Venelin Stoykov)FormSubmissionsPanel now recognises custom form submission classes (LB (Ben Johnston))TableBlock context menu (LB (Ben Johnston))ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)__in filter (Karl Hobley, Matt Westcott)__isnull filters no longer fail on Elasticsearch 5 (Karl Hobley)SearchField and a FilterField (Matt Westcott)h2 elements (Thibaud Colas)Added support for Django 2.0 (Matt Westcott, Karl Hobley, LB (Ben Johnston), Mads Jensen)
wagtail.contrib.api) to an external app (https://github.com/wagtail/wagtailapi_legacy) (Karl Hobley)construct_explorer_page_queryset hook and ModelAdmin.exclude_from_explorer property (Tim Heap)before_create_user, after_create_user, before_delete_user, after_delete_user, before_edit_user, after_edit_user (Jon Carmack)exclude_fields_in_copy property to Page to define fields that should not be included on page copy (LB (Ben Johnston)){% image %} tag syntax (LB (Ben Johnston))render_landing_page method to AbstractForm to be easily overridden and pass form_submission to landing page context (Stein Strindhaug)heading kwarg to InlinePanel to allow heading to be set independently of button label (Adrian Turjak)StructBlock can now be customised (LB (Ben Johnston))bgcolor image operation (Karl Hobley)WAGTAILADMIN_USER_LOGIN_FORM setting for overriding the admin login form (Mike Dingjan)WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS setting to determine whether superusers are included in moderation email notifications (Bruno Alla)get_template methods for overriding templates in instances (Christopher Bledsoe)QuerySet when searching with order_by_relevance=False (Bertrand Bordage)modeladmin_register as a decorator no longer replaces the decorated class with None (Tim Heap){% routablepageurl %} template tag no longer generates invalid URLs when the WAGTAIL_APPEND_SLASH setting was set to False (Venelin Stoykov)FormSubmissionsPanel now recognises custom form submission classes (LB (Ben Johnston))TableBlock context menu (LB (Ben Johnston))ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)__in filter (Karl Hobley, Matt Westcott)__isnull filters no longer fail on Elasticsearch 5 (Karl Hobley)SearchField and a FilterField (Matt Westcott)Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
Fix: Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
Fix: Fix support of ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)
ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)Fix: API listing views no longer fail when no site records are defined (Karl Hobley)
__in filter (Karl Hobley, Matt Westcott)__isnull filters no longer fail on Elasticsearch 5 (Karl Hobley)SearchField and a FilterField (Matt Westcott)Fix: Removed deprecated SessionAuthenticationMiddleware from project template (Samir Shah)
request.FILES, for use in custom form handlers (LB (Ben Johnston))Page.last_published_at is now a filterable field for search (Mikalai Radchuk)order_by_relevance=False when searching with PostgreSQL now works (Mitchel Cabuloy)WAGTAILAPI_LIMIT_MAX now accepts None to disable limiting (jcronyn)USE_THOUSAND_SEPARATOR = True from breaking the image focal point chooser (Sævar Öfjörð Magnússon)SessionAuthenticationMiddleware from project template (Samir Shah)get_admin_display_title are now shown in search results (Ben Sturmfels, Matt Westcott)Fix: Removed deprecated SessionAuthenticationMiddleware from project template (Samir Shah)
request.FILES, for use in custom form handlers (LB (Ben Johnston))Page.last_published_at is now a filterable field for search (Mikalai Radchuk)order_by_relevance=False when searching with PostgreSQL now works (Mitchel Cabuloy)WAGTAILAPI_LIMIT_MAX now accepts None to disable limiting (jcronyn)USE_THOUSAND_SEPARATOR = True from breaking the image focal point chooser (Sævar Öfjörð Magnússon)SessionAuthenticationMiddleware from project template (Samir Shah)get_admin_display_title are now shown in search results (Ben Sturmfels, Matt Westcott)Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
Fix: Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
Fix: Fix support of ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)
ATOMIC_REBUILD for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)Fix: API listing views no longer fail when no site records are defined (Karl Hobley)
__in filter (Karl Hobley, Matt Westcott)__isnull filters no longer fail on Elasticsearch 5 (Karl Hobley)SearchField and a FilterField (Matt Westcott)Fix: Migration for addition of Page.draft_title field is now reversible (Venelin Stoykov)
Page.draft_title field is now reversible (Venelin Stoykov)ManifestStaticFilesStorage is in use and collectstatic has not yet been run (Matt Westcott)Fix: Prevent home page draft title from displaying as blank (Mikalai Radchuk, Matt Westcott)
Fix: Removed deprecated jQuery load call from TableBlock initialisation (Jack Paine)
RoutablePageMixin now has a default "index" route (Andreas Nüßlein, Matt Westcott)blank setting; StreamBlock accepts a required setting (Loic Teixeira)min_num, max_num and block_counts settings to control the minimum and maximum numbers of blocks (Edwar Baron, Matt Westcott)process_form_submission method of form pages now return the created form submission object (cho-leukeleu)WAGTAILUSERS_PASSWORD_ENABLED and WAGTAILUSERS_PASSWORD_REQUIRED settings to permit creating users with no Django-side passwords, to support external authentication setups (Matt Westcott)DecimalBlock and RegexBlock (Tomasz Knapik)prepare_value method (Tim Heap)str representation, to prevent infinite loops in debugging / logging tools (Matt Westcott)load call from TableBlock initialisation (Jack Paine)Fix: Removed deprecated jQuery load call from TableBlock initialisation (Jack Paine)
RoutablePageMixin now has a default "index" route (Andreas Nüßlein, Matt Westcott)blank setting; StreamBlock accepts a required setting (Loic Teixeira)min_num, max_num and block_counts settings to control the minimum and maximum numbers of blocks (Edwar Baron, Matt Westcott)process_form_submission method of form pages now return the created form submission object (cho-leukeleu)WAGTAILUSERS_PASSWORD_ENABLED and WAGTAILUSERS_PASSWORD_REQUIRED settings to permit creating users with no Django-side passwords, to support external authentication setups (Matt Westcott)DecimalBlock and RegexBlock (Tomasz Knapik)prepare_value method (Tim Heap)str representation, to prevent infinite loops in debugging / logging tools (Matt Westcott)load call from TableBlock initialisation (Jack Paine)Fix: Custom display page titles defined with get_admin_display_title are now shown within the page explorer menu (Matt Westcott, Janneke Janssen)
get_admin_display_title are now shown within the page explorer menu (Matt Westcott, Janneke Janssen)Added a new page explorer menu built with the admin API and React (Karl Hobley, Josh Barr, Thibaud Colas, Janneke Janssen, Rob Moorman, Maurice Bartni
StreamField is now assigned a globally unique identifier (Matt Westcott)last_published_at field to the Page model (Matt Westcott)show_in_menus_default flag on page models, to allow "show in menus" to be checked by default (LB (Ben Johnston))RelatedFields for elasticsearch & PostgreSQL search backends (Lucas Moeskops, Bertrand Bordage)TableBlock options afterChange, afterCreateCol, afterCreateRow, afterRemoveCol, afterRemoveRow and contextMenu can now be overridden (Loic Teixeira)Added a new page explorer menu built with the admin API and React (Karl Hobley, Josh Barr, Thibaud Colas, Janneke Janssen, Rob Moorman, Maurice Bartni
StreamField is now assigned a globally unique identifier (Matt Westcott)last_published_at field to the Page model (Matt Westcott)show_in_menus_default flag on page models, to allow "show in menus" to be checked by default (LB (Ben Johnston))RelatedFields for elasticsearch & PostgreSQL search backends (Lucas Moeskops, Bertrand Bordage)TableBlock options afterChange, afterCreateCol, afterCreateRow, afterRemoveCol, afterRemoveRow and contextMenu can now be overridden (Loic Teixeira)Fix: Fix admin page preview that was broken 24 hours after previewing a page (Martin Hill)
Added PostgreSQL search engine (Bertrand Bordage, Jaap Roes, Arne de Laat, Ramon de Jezus)
WAGTAILADMIN_PERMITTED_LANGUAGES (Daniel Chimeno)WAGTAIL_AUTO_UPDATE_PREVIEW setting that when set to True, allows the preview window to be refreshed when changes have been made in the editor (Bertrand Bordage)submit_buttons block to login template (Gagaro)construct_image_chooser_queryset, construct_document_chooser_queryset and construct_page_chooser_queryset hooks (Gagaro)Image and Rendition models are connected automatically (Mike Dingjan)PageChooserBlock can now accept a list/tuple of page models as target_model (Mikalai Radchuk)IndexView to be more inline with the Wagtail styleguide (Andy Babic).nvmrc to the project root for Node versioning support (Janneke Janssen)form_fields_exclude property to ModelAdmin views (Matheus Bratfisch)AUTH_PASSWORD_VALIDATORS (Bertrand Bordage)non_field_errors when validation fails in the page editor (Matt Westcott)WAGTAILADMIN_RECENT_EDITS_LIMIT setting to to define the number of your most recent edits on the dashboard (Maarten Kling)is_staff flag (Matt Westcott)TAG_SPACES_ALLOWED setting (Kees Hink, Alex Gleason)Page.api_fields using a new APIField class (Karl Hobley)classname argument to StreamFieldPanel (Christine Ho)group keyword argument to StreamField blocks for grouping related blocks together in the block menu (Andreas Nüßlein){{ block.super }} in snippets/type_index.html (LB (Ben Johnston))request.is_preview flag (Wietze Helmantel)get_db_prep_value conversion are now supported (thenewguy)annotate_score (Karl Hobley)RichTextBlock toolbar now correctly positioned within StructBlock (Janneke Janssen)|safe filter from search results template in project template (Karl Hobley)Your coding agent can read these notes before it upgrades. Set up the MCP server →