DjangoCMS TypeError: from_db_value() missing 1 required positional argument: 'context' after upgrade to 3.7.2 w/ Django 3.0.1

DjangoCMS TypeError: from_db_value() missing 1 required positional argument: 'context' after upgrade to 3.7.2 w/ Django 3.0.1

我有一个工作的 DjangoCMS 应用程序 运行 DjangoCMS 3.7.1 和 Django 2.2,但是在我将 DjangoCMS 版本升级到 3.7.2 并将 Django 升级到 3.0.1 之后,我现在得到我有一个简单列表视图的页面上出现渲染错误。

该站点将正常加载我的自定义帐户登录页面,但一旦登录,列表视图就会中断并显示此错误: 回溯

django.request ERROR 2020-04-26 21:15:16,809 log 461 140647593613056 Internal Server Error: /en/
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 145, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 143, in _get_response
    response = response.render()
  File "/usr/local/lib/python3.8/site-packages/django/template/response.py", line 105, in render
    self.content = self.rendered_content
  File "/usr/local/lib/python3.8/site-packages/django/template/response.py", line 83, in rendered_content
    return template.render(context, self._request)
  File "/usr/local/lib/python3.8/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/usr/local/lib/python3.8/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.8/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/classytags/core.py", line 154, in render
    return self.render_tag(context, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/sekizai/templatetags/sekizai_tags.py", line 88, in render_tag
    rendered_contents = nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/classytags/core.py", line 154, in render
    return self.render_tag(context, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/cms/templatetags/cms_tags.py", line 447, in render_tag
    return toolbar.render_with_structure(context, nodelist)
  File "/usr/local/lib/python3.8/site-packages/cms/toolbar/toolbar.py", line 477, in render_with_structure
    rendered_contents = nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py", line 188, in render
    return template.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 173, in render
    return self._render(context)
  File "/usr/local/lib/python3.8/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.8/site-packages/django/template/defaulttags.py", line 166, in render
    len_values = len(values)
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 258, in __len__
    self._fetch_all()
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 1261, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 74, in __iter__
    for row in compiler.results_iter(results):
  File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1081, in apply_converters
    value = converter(value, expression, connection)
TypeError: from_db_value() missing 1 required positional argument: 'context'
django.server ERROR 2020-04-26 21:15:19,051 basehttp 461 140647593613056 "GET /en/ HTTP/1.1" 500 314261

pipfreeze

amqp==2.5.2
asgiref==3.2.7
astroid==2.3.3
attrs==19.3.0
beautifulsoup4==4.9.0
billiard==3.6.3.0
boto==2.49.0
celery==4.4.2
certifi==2020.4.5.1
chardet==3.0.4
coverage==5.1
dicttoxml==1.7.4
Django==3.0.1
django-appconf==1.0.4
django-bootstrap-form==3.4
django-classy-tags==1.0.0
django-cms==3.7.2
django-crispy-forms==1.9.0
django-debug-toolbar==2.2
django-environ==0.4.5
django-extensions==2.2.9
django-filer==1.7.0
django-formtools==2.2
django-ipware==2.1.0
django-js-asset==1.2.2
django-mail-queue==3.2.4
django-meta==1.6.1
django-model-utils==4.0.0
django-money==1.1
django-mptt==0.11.0
django-parler==2.0.1
django-polymorphic==2.1.2
django-reversion==3.0.7
django-robots==4.0
django-sekizai==1.1.0
django-select2==7.2.3
django-storages==1.9.1
django-taggit==1.2.0
django-taggit-autosuggest==0.3.8
django-taggit-templatetags==0.2.5
django-templatetag-sugar==1.0
django-treebeard==4.3.1
django-user-accounts==3.0.0
djangocms-admin-style==1.5.0
djangocms-attributes-field==1.2.0
djangocms-bootstrap4==1.6.0
djangocms-file==2.4.0
djangocms-googlemap==1.4.0
djangocms-icon==1.5.0
djangocms-link==2.6.0
djangocms-picture==2.4.0
djangocms-snippet==2.3.0
djangocms-style==2.3.0
djangocms-text-ckeditor==3.9.0
djangocms-video==2.3.0
djangorestframework==3.11.0
easy-thumbnails==2.7
fancycompleter==0.9.1
gunicorn==20.0.4
html5lib==1.0.1
idna==2.9
isort==4.3.21
kombu==4.6.8
lazy-object-proxy==1.4.3
mccabe==0.6.1
mimeparse==0.1.3
more-itertools==8.2.0
packaging==20.3
pdbpp==0.10.2
Pillow==7.1.2
pluggy==0.13.1
psycopg2-binary==2.8.5
py==1.8.1
py-moneyed==0.8.0
Pygments==2.6.1
pylint==2.4.4
pyparsing==2.4.7
pyrepl==0.9.0
pytest==5.4.1
pytest-django==3.9.0
pytest-pythonpath==0.7.3
python-dateutil==2.8.1
pytz==2019.3
pyuploadcare==2.6.0
redis==3.4.1
requests==2.23.0
six==1.14.0
soupsieve==2.0
sqlparse==0.3.1
Unidecode==1.1.1
urllib3==1.25.9
vine==1.3.0
wcwidth==0.1.9
webencodings==0.5.1
whitenoise==5.0.1
wmctrl==0.3
wrapt==1.11.2

查看

class ProductView(LoginRequiredMixin, ListView):
    template_name = "products/index.html"
    model = models.Product

    def get_queryset(self):
        qs = super().get_queryset()
        tag = self.request.GET.get("tag")
        if tag:
            qs = qs.filter(tags__slug=tag)

        strain = self.request.GET.get("strain")
        if strain:
            qs = qs.filter(strain__label__icontains=strain)

        return qs

当我单步执行视图代码时,通过将 pdb 放入设置方法中,我到达了下面提到的回溯开始的渲染调用,似乎:

129             # If the response supports deferred rendering, apply template
 130             # response middleware and then render the response
 131             elif hasattr(response, 'render') and callable(response.render):
 132                 for middleware_method in self._template_response_middleware:
 133                     response = middleware_method(request, response)
 134                     # Complain if the template response middleware returned None (a common error).
 135                     if response is None:
 136                         raise ValueError(
 137                             "%s.process_template_response didn't return an "
 138                             "HttpResponse object. It returned None instead."
 139                             % (middleware_method.__self__.__class__.__name__)
 140                         )
 141
 142                 try:
 143  ->                 response = response.render()
 144                 except Exception as e:
 145                     response = self.process_exception_by_middleware(e, request)
 146
 147             return response
(Pdb++)
TypeError: from_db_value() missing 1 required positional argument: 'context'
[62] > /usr/local/lib/python3.8/site-packages/django/core/handlers/base.py(143)_get_response()
-> response = response.render()
> /usr/local/lib/python3.8/site-packages/django/core/handlers/base.py(143)

任何指导或帮助将不胜感激,也很乐意在必要时提供更多上下文——我是 Whosebug 的新手。

我 运行 将 DjangoCMS 升级到 3.7.2 时遇到了同样的问题。我相信上下文参数在 Django 3 中被删除了(source). The problem for me was djangocms-text-ckeditor doesn't support Django 3 yet. More specifically, HTMLField in my model didn't work. I opened an issue here 如果你想像其他人那样评论它。也许它会让他们更快地修复它。现在,你可能不得不等到它被修复.干杯!

如果您通过 pip 安装了新应用,请在该应用中找到并编辑 fields.py。 例如,我被 pip install *geoposition* 安装了 geoposition 应用程序,所以我编辑了 Lib\site-packages\ geoposition\fields.py并改变了

def from_db_value(self, value, expression, connection, context):

def from_db_value(self, value, expression, connection, context=None):