14

I'm currently moving from my development server to an Apache web production server.

I've tried doing the following just by copying it over and I can login to the admin panel but it doesn't show up.

My admin.py in my app looks like this:

    import models
    from django.contrib import admin

    admin.site.register(models.Organization)

And here is my models.py

from django.db import models

class Organization(models.Model):
    name = models.CharField(max_length=100)
    website = models.URLField()
    azon_code = models.CharField(max_length=50)
    gooe_code = models.CharField(max_length=50)
    cj_code = models.CharField(max_length=50)

I've resyned the database and restarted apache as well thinking that might do something.

Noah Clark
  • 8,101
  • 14
  • 74
  • 116

6 Answers6

21

Aren't you supposed to import like:

from mysite.myapp.models import Organization
admin.site.register(Organization)
Andrei Serdeliuc ॐ
  • 5,828
  • 5
  • 39
  • 66
10

For me it was very silly reason. I have enabled permissions. Admin user didn't have the permission to access the models.

I gave the permission to admin user. It worked.

Netro
  • 7,119
  • 6
  • 40
  • 58
  • I recommend laying eyes on your permissions if you have a variant of this problem! Almost every thread mentions permissions, but I was fairly certain my user had superuser permissions and I was very wrong! (After too long troubleshooting, I saw that site-packages/django/contrib/admin/sites.py was saying that I did not have permissions to view my registered app's models. Upon double-checking permissions, I also had not made my admin user a superuser, nor had I given the required permissions.) – sage Jan 14 '17 at 19:56
3

For those who are visiting this question, the above answer doesn't work directly in the current Django version(1.7.7).

The answer to the above question becomes:

from myapp.models import Organization
admin.site.register(Organization)
leodotcloud
  • 1,830
  • 14
  • 15
1

Another possible reason for not showing app in admin page is Apache doesn't have permissions. Sometimes we create an app with permission that Apache can't access it. If Apache doesn't have access it will not show. For linux users require to change app permissions.

sudo chown -R www-data:www-data app_name

This command will give permisson to Apache to access app folder recursively.

Harun ERGUL
  • 5,770
  • 5
  • 53
  • 62
1

in your admin.py file inside your main( first and default ) app of your project do this

in my case i have 3 app as follow

cityapp,stateapp,countryapp

so in my admin.py file i will add following line

from django.contrib import admin
from stateapp.models import State
from countryapp.models import Country
from cityapp.models import City

admin.site.register(Country)
admin.site.register(State)
admin.site.register(City)

it works in my case see

enter image description here

Krishna Jangid
  • 4,961
  • 5
  • 27
  • 33
0

Your Imports in the admin.py is wrong i guess Try this way

from .models import *