14
votes

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.

5
You haven't forgotten to add it to your settings.py, have you?lemonad
Yes, I did. Thank you so much!Noah Clark
Haha, I should have added that as an answer instead of a comment! :)lemonad
Also don't forget to run syncdb after all.Jonas Gröger
Check the filename is exactly "admin.py", I had a leading space there " admin.py"fmalina

5 Answers

16
votes

Aren't you supposed to import like:

from mysite.myapp.models import Organization
admin.site.register(Organization)
6
votes

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.

3
votes

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)
1
votes

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.

0
votes

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