cookiecutter-django: App model doesn't appear in Django admin in production

Danny, First of all, thank you for this. It exponentially speeded up my starting a new project. Everything was going along swimmingly until I moved to production. I put this up as a question on StackOverflow that is totally empty.

The short version is this: The model for my app works fine in my local runserver. When I deploy to Heroku, everything works perfectly except my app doesn’t show up in the Django admin.

Here’s the long version:

I’ve been building a Django app and testing locally for some time. On my machine, when I visit the admin page, my app appears. When I deploy to Heroku, it no longer does. The odd thing is that when setting user permissions in the admin, I can access the tables for my app in the postgres db, so it doesn’t appear to be a db issue, just my custom admin is not being found or loaded.

My directory listing is roughly this

overall
    - myproject
        manage.py
        urls.py
        wsgi.py
        -templates
        -contrib
        -users
        -myapp
            admin.py
            forms.py
            models.py
            fixtures

My urls.py file

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.views.generic import TemplateView

urlpatterns = patterns('',
    url(r'^$',  # noqa
        TemplateView.as_view(template_name='pages/home.html'),
        name="home"),
    url(r'^about/$',
        TemplateView.as_view(template_name='pages/about.html'),
        name="about"),

# Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls), name="admin"),

# User management
    url(r'^users/', include("users.urls", namespace="users")),
    url(r'^accounts/', include('allauth.urls')),

# Uncomment the next line to enable avatars
    url(r'^avatar/', include('avatar.urls')),

# Your stuff: custom urls go here

) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

In myapp/admin.py, I have this:

from django.contrib import admin
from myapp.models import State, Facility, Report
from forms import ReportForm

@admin.register(State)
class StateAdmin(admin.ModelAdmin):
    list_display=('state_name','state_abbrev')
    ordering=('state_name',)

@admin.register(Faculty)
class FacultyAdmin(admin.ModelAdmin):
    pass

In my django settings on heroku, i have this:

INSTALLED_APPS = ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions',      
'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'suit', 
'django.contrib.admin', 'crispy_forms', 'allauth', 'allauth.account', 'allauth.socialaccount', 
'users', 'myapp', 'djangosecure', 'gunicorn', 'storages', 'collectfast')

But my admin only contains users, sites, accounts in it, and not myapp, like it does on my local testing environment.

(In a separate issue, when I try to use heroku’s foreman to test the app locally, it can’t seem to find the environment variables to run gunicorn, so that’s tripping up my debugging too. )

Please, please help me figure this out. It’s driving me crazy. Any advice would be greatly appreciated.

Thanks!

About this issue

  • Original URL
  • State: closed
  • Created 10 years ago
  • Comments: 18 (7 by maintainers)

Most upvoted comments

try to restart uwsgi. it works for me.

I had this problem today in production. Just had to restart the server. 😃