TypeError: __str__ вернул не-строку (тип NoneType) с пакетными моделями Django сторонних производителей - PullRequest
0 голосов
/ 22 марта 2019

Я установил пакет django_message в свое приложение django, используя django 2.0, и, хотя он работает на моей машине для разработки, при попытке открыть список сообщений из консоли администратора Django выдает следующие ошибки при работе.

TypeError: __str__ returned non-string (type NoneType)
[22/Mar/2019 15:08:12] ERROR [django.request:118] Internal Server Error: /admin/django_messages/message/
Traceback (most recent call last):
  File "/opt/site_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/opt/site_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/opt/site_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/options.py", line 574, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 223, in inner
    return view(request, *args, **kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/utils/decorators.py", line 62, in _wrapper
    return bound_func(*args, **kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/site_env/lib/python3.6/site-packages/django/utils/decorators.py", line 58, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/options.py", line 1570, in changelist_view
    cl = self.get_changelist_instance(request)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/options.py", line 705, in get_changelist_instance
    self,
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/views/main.py", line 76, in __init__
    self.queryset = self.get_queryset(request)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/views/main.py", line 320, in get_queryset
    filters_use_distinct) = self.get_filters(request)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/views/main.py", line 130, in get_filters
    self.model, self.model_admin, field_path=field_path
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/filters.py", line 157, in create
    return list_filter_class(field, request, params, model, model_admin, field_path=field_path)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/filters.py", line 168, in __init__
    self.lookup_choices = self.field_choices(field, request, model_admin)
  File "/opt/site_env/lib/python3.6/site-packages/django/contrib/admin/filters.py", line 195, in field_choices
    return field.get_choices(include_blank=False)
  File "/opt/site_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 812, in get_choices
    limit_choices_to)]
  File "/opt/site_env/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 811, in <listcomp>
    for x in rel_model._default_manager.complex_filter(
  File "/opt/site_env/lib/python3.6/site-packages/django/utils/encoding.py", line 34, in smart_text
    return force_text(s, encoding, strings_only, errors)
  File "/opt/site_env/lib/python3.6/site-packages/django/utils/encoding.py", line 67, in force_text
    s = str(s)
TypeError: __str__ returned non-string (type NoneType)

Самая большая проблема в том, что это не единственная модель, которая выдает ошибку. У меня тоже самое от django-allauth выдает такую ​​же ошибку с SocialAccount.

Другая проблема заключается в том, что я не думаю, что мне следует исправлять коды из этих пакетов, но мне больше ничего не остается.

Также следует отметить, что ни одна из моделей для самого приложения не вызывает этих ошибок. Применяется только к django_allauth и django_messages. Тем не менее, сбой не происходит в моей машине разработки. Таблица mysql для django_messages пуста (без записей). Есть ли конфиг, который вызывает такие ошибки или что-то. Я использую django 2.0 и python 3.6 в обеих средах.

1 Ответ

0 голосов
/ 23 марта 2019

Выяснил.

Оказывается, что все неисправные модели связаны с моделью User, чей метод str () указывает на поле, столбец базы данных которого имеет значение NULL.

Решение: я должен сделать это поле не обнуляемым на уровне базы данных и на уровне django, назначив значение по умолчанию на этапе pre_save.

Это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...