AppRegistryNotReady: lazy format_html ()?

Why am I getting this exception?

Traceback (most recent call last): File "/path1/myapp-isu/myapp_isu/tests/unit/views/test_view_isu.py", line 8, in <module> from myapp_isu.search_form import ISUSearchForm File "/path1/myapp-isu/myapp_isu/search_form.py", line 87, in <module> class ISUSearchForm(forms.Form): File "/path1/myapp-isu/myapp_isu/search_form.py", line 108, in ISUSearchForm foo_filter=forms.ModelChoiceField(FooFilter.objects.all(), label=format_html('<a href="%s">%s</a>', reverse_lazy('foo-filter'), FooFilter._meta.verbose_name)) File "/path1/dt/dt/utils/templateutils.py", line 127, in reverse return urlresolvers.reverse(*args, **kwargs) File "/path1/dt/dt/utils/urlresolverutils.py", line 49, in patched_reverse base_url = orig_reverse(viewname, urlconf=urlconf, args=args, kwargs=kwargs, prefix=prefix, current_app=current_app) File "/path2/django/core/urlresolvers.py", line 578, in reverse return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) File "/path2/django/core/urlresolvers.py", line 432, in _reverse_with_prefix self._populate() File "/path2/django/core/urlresolvers.py", line 284, in _populate for pattern in reversed(self.url_patterns): File "/path2/django/core/urlresolvers.py", line 401, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/path2/django/core/urlresolvers.py", line 395, in urlconf_module self._urlconf_module = import_module(self.urlconf_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/path1/myapp-eins/myapp_eins/etc/rooturls.py", line 13, in <module> admin.autodiscover() File "/path2/django/contrib/admin/__init__.py", line 24, in autodiscover autodiscover_modules('admin', register_to=site) File "/path2/django/utils/module_loading.py", line 67, in autodiscover_modules for app_config in apps.get_app_configs(): File "/path2/django/apps/registry.py", line 137, in get_app_configs self.check_apps_ready() File "/path2/django/apps/registry.py", line 124, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 

This only happens if I call unittest through PyCharm, and not if I use py.test in the shell.

I think reverse_lazy() is not lazy here, as it is used in format_html() . Any way to have lazy format_html() ?

Versions:

  • Django 1.8
  • Pycharm 5.0.4
+5
source share
4 answers

Since stacktrace has things like url_patterns, I assume DJANGO_SETTINGS_MODULE set correctly.

But you still need to call django.setup() before you run anything else.

 import django django.setup() 

For me, this error message has disappeared.

+1
source

I had problems with PyCharm and I assume that you are using the community edition (which I used).

If so, the problem is very likely that you configured django incorrectly. You can probably fix this with some hacks that might work for this.

I would start with this . (import django to ensure django console starts)

Then maybe this.

There also: Check "Edit Configurations" as part of the test you are using, and add DJANGO_SETTINGS_MODULE=<app-name-here>.settings to your environment variables.

0
source

If all of the above fails, try initializing the form and importing it in the constructor:

  class ISUSearchForm(...): ... foo_filter = forms.Field() ... def __init__(*args, **kwargs) from ... import reverse_lazy from ... import FooFilter self.fields['foo_filter'] = \ forms.ModelChoiceField( FooFilter.objects.all(), label=format_html( '<a href="%s">%s</a>', reverse_lazy('foo-filter'), FooFilter._meta.verbose_name ) ) super().__init__(*args, **kwargs) 

The error can be caused by the exact import sequence performed by various test participants, and by the fact that you use only class variables to customize the form.

0
source

In django 1.8, reverse () and reverse_lazy () now return Unicode strings instead of byte strings.

Please follow the link:

https://docs.djangoproject.com/en/1.8/releases/1.8/

0
source

Source: https://habr.com/ru/post/1247049/


All Articles