模型没有显示在Django上admin

问题描述:

我刚刚开始使用Django 1.11开始我的第一个项目。我遵循了我在多个Django 1.10项目中使用的相同步骤,但出于某种原因,我的模型未显示在本地主机/管理站点上。模型没有显示在Django上admin

我INSTALLED_APPS从settings.py:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'home.apps.HomeConfig', 
] 

我的admin.py:

from django.contrib import admin 

from home.models import Home 

# begin Admin Class Definitions 
class HomeAdmin(models.ModelAdmin): 

    fieldsets = [ 
     ('Title', {'fields': ['title']}), 
     ('Publication Date', {'fields': ['pub_date']}), 
     ('Home Page Text', {'fields': ['header', 'sub_header', 
     'link_text']}), 
    ] 
    list_display = ('title', 'pub_date') 
    list_filter = ['pub_date'] 

admin.site.register(Home, HomeAdmin) 

我[main_app] /urls.py:

from django.conf.urls import url, include 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('home.urls')) 
] 

但是,当我去到localhost:8000/admin唯一的东西是组和用户,就好像我根本没有注册任何模型。

我已经运行makemigrations并迁移,并且我已经尝试将admin.py放在应用程序目录中而不是项目目录中。它目前位于[project_name]/[project_name]目录(具有settings.py,urls.py和wsgi.py文件的目录)。

有什么建议吗?

+0

如何删除'admin.autodiscover()'? –

+0

不变,不幸的是 – Jay

+0

什么是'home.apps.HomeConfig'?如果您的应用程序被称为“家”,安装的应用程序应列出“家”。也把它放在列表的顶部,而不是底部。 – allcaps

当我使用Django管理始终导入这种形式:

from django.contrib import admin 

而且inherint在类:

class HomeAdmin(admin.ModelAdmin): 

所以,你的admin.py文件将looke这样的:

from django.contrib import admin 

from home.models import Home 

# begin Admin Class Definitions 
class HomeAdmin(admin.ModelAdmin): 

    fieldsets = [ 
     ('Title', {'fields': ['title']}), 
     ('Publication Date', {'fields': ['pub_date']}), 
     ('Home Page Text', {'fields': ['header', 'sub_header', 
     'link_text']}), 
    ] 
    list_display = ('title', 'pub_date') 
    list_filter = ['pub_date'] 

admin.site.register(Home, HomeAdmin) 
+0

这正是我的admin.py在原始问题中的样子。 – Jay

+0

好吧在你的类必须: 类HomeAdmin(models.ModelAdmin): ,不知道从哪里models.ModelAdmin是从哪里来的, 尝试使用:admin.ModelAdmin – jspblm

+1

噢,我的上帝,你是对的。那是正确的问题。 对不起,有点sn。。 – Jay

我认为你必须将你的模型注册到管理员。我通常这样做,如果它是一个简单的模型。

from django.contrib import admin 
    from .models import * 

    # Register your models here. 
    @admin.register(Model) 
    class ModelAdmin(admin.ModelAdmin): pass 
+0

我试着用装饰器和'admin.site.register(Model,ModelAdmin)'注册它,并且都不行。 – Jay

我放弃了试图诊断我的问题,并nuked项目,并重新开始。现在它工作正常。我真的不知道问题是什么。如果有人好奇,这里是我的新文件:

从settings.py:

INSTALLED_APPS = [ 
    'home', 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
] 

从urls.py:

from django.conf.urls import url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
] 

从admin.py:

from django.contrib import admin 

# Register your models here. 
from .models import HomePageText 

admin.site.register(HomePageText) 

我真的不明白为什么它以前没有工作。如果有更多见解的人可以发现我不能请让我知道的一些差异。