On Fri, Mar 27, 2009 at 9:44 AM, Stephan John <em...@stephanjohn.de> wrote:

>
> Am Freitag, 27. März 2009 14:28:28 schrieb Karen Tracey:
> > On Fri, Mar 27, 2009 at 9:19 AM, Stephan John <em...@stephanjohn.de>
> wrote:
> > > I registered the models with:
> > > admin.site.register(Beitrag, BeitragAdmin)
> > > admin.site.register(Container, ContainerAdmin)
> > >
> > > It works fine in debug-mode. I have problems only if debug is false.
> >
> > And those lines are actually executed when DEBUG is False?  What I'm
> saying
> > is that the urlpatterns displayed when it is not working look like no
> calls
> > to register have been made.  I don't see anything in the admin code
> itself
> > that is dependent on the DEBUG setting that would explain that, nor can I
> > recreate the problem if I set DEBUG to False in my own app, so my first
> > guess is that your code somehow doesn't actually execute those register
> > lines when DEBUG is False.
> >
> > Karen
> >
> >
> Yes, both lines are in the file models.py as the last lines.
>

Your calls to admin.site.register should not be in your models.py file.
They should be in a file named admin.py and a call to admin.autodiscover()
ought to be included in your urls.py, as described here:

http://docs.djangoproject.com/en/dev/ref/contrib/admin/

If you put the calls in models.py first it is intdeterminate when that file
will be loaded, so unpredictable when the registrations will happen.  I'd
guess when you run with DEBUG set to True your models.py hapens to be loaded
early on, but not when you run with DEBUG=False.  Another problem with
register calls in models.py is that if/when models.py file is imported
multiple times, you will get AlreadyRegistered exceptions on the register
calls, since the models were registered the first time models.py was loaded.

Placing the registrations in admin.py and calling admin.autodiscover() from
urls.py ensures that the admin registrations happen only once, at a
predictable time.


> I've added the following lines in the file ../django/contrib/admin/sites.py
> after line 87:
> f = open('/tmp/error.tmp', 'w+')
> f.write(str(admin_class))
> f.write(str(model))
> f.close()
>
> The Output in the tmp-file is:
> <class 'project.mainpage.models.ContainerAdmin'><class
> 'project.mainpage.models.Container'>
>
> For me it looks ok – the model is registered.
>

I can't explain that, but as a first step I'd change your setup to match
standard practice.  Having admin registrations in models.py is just asking
for trouble.

Karen

--~--~---------~--~----~------------~-------~--~----~
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 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to