Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AppRegistryNotReady: lazy format_html()?

Tags:

django

Why do I get 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.

It only happens if I call the unittest via PyCharm, not if I use py.test on the shell.

I guess reverse_lazy() is not lazy here, since it gets used in format_html(). Any way to have a lazy format_html()?

Versions:

  • Django 1.8
  • Pycharm 5.0.4
like image 344
guettli Avatar asked Nov 08 '22 16:11

guettli


1 Answers

Since there are things like url_patterns in the stacktrace, I assume that DJANGO_SETTINGS_MODULE is set correctly .

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

import django
django.setup()

For me, that made this error message go away.

like image 82
C14L Avatar answered Nov 15 '22 04:11

C14L