I created a vanilla project using 'django-admin.py startproject
mysite' and then created a vanilla app in mysite using 'manage.py
startapp myapp'. I ensured that 'mysite.myapp' was added to
mysite.settings.INSTALLED_APPS, and also updated some other settings
in mysite.settings.py. All well and good.

Now, myapp is the package for my application, and so in its
__init__.py, I want to do some setting up. I wanted some information
from the User model in django.contrib.auth.models, and so I imported
django.contrib.auth.models - this led to an error, though I was able
to import django.contrib.auth without any problems.

With the following myapp/__init__.py:

import django.contrib.auth
print django.contrib.auth
#import django.contrib.auth.models

When I ran 'manage.py diffsettings', I got the following output, as
expected
(please excuse line-wrap if it happens):

[EMAIL PROTECTED]:~/projects/mysite$ ./manage.py diffsettings
<module 'django.contrib.auth' from
'/usr/lib/python2.4/site-packages/django/contrib/auth/__init__.pyc'>
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = '/home/vinay/projects/mysite.db'
DEBUG = True
INSTALLED_APPS = ['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sites', 'mysite.myapp']
LANGUAGE_CODE = 'en-gb'
MIDDLEWARE_CLASSES = ('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware')
ROOT_URLCONF = 'mysite.urls'  ###
SECRET_KEY = 'u_wf!1^!3y7iz!)=3cs8-=clsg^#g&2y16cavha2!fca3macrw'
SETTINGS_MODULE = 'mysite.settings'  ###
SITE_ID = 1  ###
TEMPLATE_DEBUG = True
TIME_ZONE = 'Europe/London'

However, uncommenting the last line in myapp/__init__.py and running
'manage.py
diffsettings' led to an error:

[EMAIL PROTECTED]:~/projects/mysite$ ./manage.py diffsettings
<module 'django.contrib.auth' from
'/usr/lib/python2.4/site-packages/django/contrib/auth/__init__.pyc'>
Traceback (most recent call last):
  File "./manage.py", line 11, in ?
    execute_manager(settings)
  File "/usr/lib/python2.4/site-packages/django/core/management.py",
line 1680, in execute_manager
    execute_from_command_line(action_mapping, argv)
  File "/usr/lib/python2.4/site-packages/django/core/management.py",
line 1572, in execute_from_command_line
    translation.activate('en-us')
  File
"/usr/lib/python2.4/site-packages/django/utils/translation/
trans_real.py", line 195, in activate
    _active[currentThread()] = translation(language)
  File
"/usr/lib/python2.4/site-packages/django/utils/translation/
trans_real.py", line 184, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File
"/usr/lib/python2.4/site-packages/django/utils/translation/
trans_real.py", line
167, in _fetch
    app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]),
appname[p+1:])
  File "/home/vinay/projects/mysite/../mysite/myapp/__init__.py", line
3, in ?
    import django.contrib.auth.models
  File "/usr/lib/python2.4/site-packages/django/contrib/auth/
models.py", line 4,
in ?
    from django.contrib.contenttypes.models import ContentType
  File "/usr/lib/python2.4/site-packages/django/contrib/contenttypes/
models.py",
line 33, in ?
    class ContentType(models.Model):
  File "/usr/lib/python2.4/site-packages/django/db/models/base.py",
line 30, in
__new__
    new_class.add_to_class('_meta', Options(attrs.pop('Meta', None)))
  File "/usr/lib/python2.4/site-packages/django/db/models/base.py",
line 169, in
add_to_class
    value.contribute_to_class(cls, name)
  File "/usr/lib/python2.4/site-packages/django/db/models/options.py",
line 53,
in contribute_to_class
    setattr(self, 'verbose_name_plural',
meta_attrs.pop('verbose_name_plural',
self.verbose_name + 's'))
  File "/usr/lib/python2.4/site-packages/django/utils/functional.py",
line 42,
in __wrapper__
    res = self.__func(*self.__args, **self.__kw)
  File
"/usr/lib/python2.4/site-packages/django/utils/translation/
trans_real.py", line
255, in gettext
    _default = translation(settings.LANGUAGE_CODE)
  File
"/usr/lib/python2.4/site-packages/django/utils/translation/
trans_real.py", line
184, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File
"/usr/lib/python2.4/site-packages/django/utils/translation/
trans_real.py", line
167, in _fetch
    app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]),
appname[p+1:])
AttributeError: 'module' object has no attribute 'myapp'

Now, why should this be? The traceback is mystifying to me - can
anyone shed any
light? I certainly want, in myapp's setup, to do some things based on
django.contrib.auth.models.User. (For example, I might want to set the
email
field to be unique, which it is not by default). It seemed reasonable
to assume
that all the apps would be initialised in the order that they appear
in
INSTALLED_APPS, and mysite.myapp (being last in the list) should be
able to rely
on the preceding apps being initialised already. If this is not the
case, where
is the best place to do the kind of initialisation I want to?

Thanks in advance,


Vinay Sajip


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to