django-cast
django-cast copied to clipboard
Support for Wagtail 7
Tests are running, but I got this traceback in production while trying to edit a post:
Template error:
In template /home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/templates/wagtailadmin/panels/object_list.html, error at line 9
Field 'id' expected a number but got {'id': '3acfb13d-e4b9-4b67-a697-4400cda4784e', 'type': 'item', 'value': 3863}.
1 : {% load wagtailadmin_tags %}
2 :
3 : <div class="w-form-width" {% include "wagtailadmin/shared/attrs.html" with attrs=self.attrs %}>
4 : {% if self.help_text %}
5 : {% help_block status="info" %}{{ self.help_text }}{% endhelp_block %}
6 : {% endif %}
7 : {% for child, identifier in self.visible_children_with_identifiers %}
8 : {% panel id_prefix=self.prefix id=identifier classname=child.classes|join:' ' attrs=child.attrs heading=child.heading heading_size="label" icon=child.icon id_for_label=child.id_for_label is_required=child.is_required %}
9 : {% component child %}
10 : {% endpanel %}
11 : {% endfor %}
12 : </div>
13 :
Traceback (most recent call last):
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/fields/__init__.py", line 2128, in get_prep_value
return int(value)
^^^^^^^^^^
The above exception (int() argument must be a string, a bytes-like object or a real number, not 'dict') was the direct cause of the following exception:
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/localization.py", line 155, in overridden_render
return render()
^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/sentry_sdk/integrations/django/views.py", line 41, in sentry_patched_render
return old_render(self)
^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/sentry_sdk/utils.py", line 1811, in runner
return sentry_patched_function(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/sentry_sdk/integrations/django/templates.py", line 77, in rendered_content
return real_rendered_content.fget(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/response.py", line 92, in rendered_content
return template.render(context, self._request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/backends/django.py", line 107, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 65, in render
result = block.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 65, in render
result = block.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/loader_tags.py", line 65, in render
result = block.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1075, in render
output = self.filter_expression.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 722, in resolve
obj = self.var.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 854, in resolve
value = self._resolve_lookup(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 925, in _resolve_lookup
current = current()
^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/panels/base.py", line 317, in render_form_content
return mark_safe(self.render_html() + self.render_missing_fields())
^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/laces/components.py", line 49, in render_html
return template.render(context_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/backends/django.py", line 107, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/defaulttags.py", line 243, in render
nodelist.append(node.render_annotated(context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/defaulttags.py", line 327, in render
return nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1075, in render
output = self.filter_expression.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 722, in resolve
obj = self.var.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 854, in resolve
value = self._resolve_lookup(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 925, in _resolve_lookup
current = current()
^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/laces/components.py", line 49, in render_html
return template.render(context_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/backends/django.py", line 107, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/defaulttags.py", line 243, in render
nodelist.append(node.render_annotated(context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/templatetags/wagtailadmin_tags.py", line 1027, in render
children = self.nodelist.render(context) if self.nodelist else ""
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 1016, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/laces/templatetags/laces.py", line 81, in render
html = component.render_html(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/laces/components.py", line 47, in render_html
context_data = self.get_context_data(parent_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/panels/field_panel.py", line 294, in get_context_data
context.update(self.get_editable_context_data())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/panels/field_panel.py", line 336, in get_editable_context_data
rendered_field = self.bound_field.as_widget(attrs=widget_attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/forms/boundfield.py", line 108, in as_widget
return widget.render(
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/base.py", line 706, in render
return self.render_with_errors(
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/base.py", line 686, in render_with_errors
value_json = json.dumps(self.block_def.get_form_state(value))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/stream_block.py", line 359, in get_form_state
"value": child.block.get_form_state(child.value),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/stream_block.py", line 359, in get_form_state
"value": child.block.get_form_state(child.value),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/struct_block.py", line 257, in get_form_state
name: self.child_blocks[name].get_form_state(val)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/cast/blocks.py", line 251, in get_form_state
return super().get_form_state(value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/list_block.py", line 352, in get_form_state
"value": self.child_block.get_form_state(block.value),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/blocks/field_block.py", line 863, in get_form_state
return self.widget.get_value_data(value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/widgets/chooser.py", line 151, in get_value_data
instance = self.get_instance(value)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/wagtail/admin/widgets/chooser.py", line 122, in get_instance
return self.model_class.objects.get(pk=value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 619, in get
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 1491, in filter
return self._filter_or_exclude(False, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 1509, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 1516, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/sql/query.py", line 1643, in add_q
clause, _ = self._add_q(q_object, can_reuse)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/sql/query.py", line 1675, in _add_q
child_clause, needed_inner = self.build_filter(
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/sql/query.py", line 1585, in build_filter
condition = self.build_lookup(lookups, col, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/sql/query.py", line 1412, in build_lookup
lookup = lookup_class(lhs, rhs)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/lookups.py", line 38, in __init__
self.rhs = self.get_prep_lookup()
^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/lookups.py", line 410, in get_prep_lookup
return super().get_prep_lookup()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/lookups.py", line 96, in get_prep_lookup
return self.lhs.output_field.get_prep_value(self.rhs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/homepage/site/.venv/lib/python3.13/site-packages/django/db/models/fields/__init__.py", line 2130, in get_prep_value
raise e.__class__(
^^^^^^^^
Exception Type: TypeError at /cms/pages/696/edit/
Exception Value: Field 'id' expected a number but got {'id': '3acfb13d-e4b9-4b67-a697-4400cda4784e', 'type': 'item', 'value': 3863}.
Raised during: wagtail.admin.views.pages.edit.EditView