Opened 16 years ago
Last modified 14 years ago
#8011 closed
Translated strings in a ForeignKey of a model in an application not in the project root causes errors — at Initial Version
Reported by: | anonymous | Owned by: | nobody |
---|---|---|---|
Component: | Translations | Version: | dev |
Severity: | Keywords: | translation, lazy, model | |
Cc: | oliver@… | Triage Stage: | Accepted |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
This seems like a real edge-case, but still it is an issue (for me at least). Since the memory optimization stuff from [8127], if I have a lazily translated string (in this case as the verbose_name
) for a ForeignKey, which is in a model located in an application not in the project root (in this case in project.generic.tagging
, I get this lovely error:
Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) File "/usr/local/obeattie/__init__.py", line 301, in execute_manager File "/usr/local/obeattie/__init__.py", line 248, in execute File "/sw/lib/python2.5/site-packages/django/core/management/base.py", line 77, in run_from_argv File "/sw/lib/python2.5/site-packages/django/core/management/base.py", line 86, in execute File "/usr/local/django/trunk/django/utils/translation/__init__.py", line 73, in activate return real_activate(language) File "/usr/local/django/trunk/django/utils/translation/__init__.py", line 43, in delayed_loader return g['real_%s' % caller](*args, **kwargs) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 209, in activate _active[currentThread()] = translation(language) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 198, in translation default_translation = _fetch(settings.LANGUAGE_CODE) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 181, in _fetch app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:]) File "/usr/local/obeattie/../obeattie/generic/tagging/__init__.py", line 1, in <module> import obeattie.generic.tagging.admin File "/usr/local/obeattie/../obeattie/generic/tagging/admin.py", line 3, in <module> from obeattie.generic.tagging import models as tagging_models File "/usr/local/obeattie/../obeattie/generic/tagging/models.py", line 500, in <module> class TaggedItem(models.Model): File "/Library/Python/2.5/site-packages/django/db/models/base.py", line 89, in __new__ new_class.add_to_class(obj_name, obj) File "/Library/Python/2.5/site-packages/django/db/models/base.py", line 140, in add_to_class value.contribute_to_class(cls, name) File "/Library/Python/2.5/site-packages/django/db/models/fields/related.py", line 672, in contribute_to_class super(ForeignKey, self).contribute_to_class(cls, name) File "/Library/Python/2.5/site-packages/django/db/models/fields/related.py", line 113, in contribute_to_class self.do_related_class(other, cls) File "/Library/Python/2.5/site-packages/django/db/models/fields/related.py", line 121, in do_related_class self.set_attributes_from_rel() File "/Library/Python/2.5/site-packages/django/db/models/fields/related.py", line 117, in set_attributes_from_rel self.verbose_name = self.verbose_name or self.rel.to._meta.verbose_name File "/Library/Python/2.5/site-packages/django/utils/functional.py", line 188, in __wrapper__ res = self.__func(*self.__args, **self.__kw) File "/usr/local/django/trunk/django/utils/translation/__init__.py", line 62, in ugettext return real_ugettext(message) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 288, in ugettext return do_translate(message, 'ugettext') File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 278, in do_translate _default = translation(settings.LANGUAGE_CODE) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 198, in translation default_translation = _fetch(settings.LANGUAGE_CODE) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 181, in _fetch app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:]) AttributeError: 'module' object has no attribute 'tagging'
(This actually happened in django-tagging
). I've tracked it down to changes made to or in django.utils.functional.lazy.__proxy__.__promise__.__wrapper__
— it doesn't appear that it got called prior to these changes (in [8119] at least), if that helps at all.