2017-04-18 228 views
0

我剛剛開始使用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

回答

0

當我使用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

1

我認爲你必須將你的模型註冊到管理員。我通常這樣做,如果它是一個簡單的模型。

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

0

我放棄了試圖診斷我的問題,並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) 

我真的不明白爲什麼它以前沒有工作。如果有更多見解的人可以發現我不能請讓我知道的一些差異。