2009-12-03 56 views
16

我向管理員添加了模特,通過admin.site.register,並且不顯示在管理員中。由於管理員是如此「它只是工作」,我不知道如何調試。指針?註冊模特不在管理員中顯示

+1

你是如何添加它們的? – panchicore 2009-12-03 13:45:43

回答

39

加入並註冊你的管理員後

# settings.py 
INSTALLED_APPS = (
    # other apps ... 
    'app', 
) 

同步你的項目爲模式,如果你還沒有這樣做的話:

python manage.py syncdb 

重新啓動您的服務器,CTRL-C

python manage.py runserver 
+0

+1用於提取最可能的原因。 – 2009-12-03 15:08:15

+1

這是一個很好的總結!它可以解決90%的問題,而模型不會顯示在管理員中! +1 – Laurent 2014-05-13 08:51:24

+0

對我來說,'python manage.py runserver'不起作用,因爲我在端口80上使用一個實時服務器進行測試,所以我不得不輸入命令'sudo service apache2 restart',它更新了我最近添加的模型到管理網站。 – 2015-02-25 21:08:39

1

您是否已將應用程序添加到已安裝的應用程序中?這在我身上發生過一次和兩次。 :)否則,我們會看到代碼來幫助你。

+0

這個1,000x !!!!我只花了兩個小時把我的頭髮撕掉,拿出三個幾乎相同的應用程序,其中一個顯示出來,另外兩個不顯示。我知道管理員網站有他們註冊,因爲重複或無效的註冊是投擲和錯誤。 SO上引用的每一個「初學者」錯誤都沒有問題。然後埋在這個線程深處是你的評論,併爲我一個facepalm。非常感謝!! – jlovison 2012-12-19 12:59:04

7

如有疑問,請關閉服務器,syncdb,啓動服務器。

# app/admin.py 
class YourModelAdmin(admin.ModelAdmin): 
    pass 

admin.site.register(YourModel, YourModelAdmin) 

確保您的應用是在您的項目settings.py

+0

此評論有明確的+1。我認爲開發服務器會在admin.py文件中找到任何更改 - 無法保證100%重新啓動服務器造成了不同的世界(以一種積極的方式)。 – tonemcd 2009-12-03 21:46:46

+1

更改yes,但開發服務器不接收新文件。 – Kugel 2009-12-03 23:34:33

+0

我傾向於始終打開我的settings.py文件,並且快速入侵以重新引導服務器的方式是修改設置文件,這會導致Dev服務器接收任何新的更改。 – 2009-12-09 00:38:45

1

還要確保你的admin.py中沒有語法錯誤或任何東西。這可能會導致應用程序無法在AdminSite中註冊。

2

我認爲Thierry的答案中的清單幾乎是確定性的,但請確保urls.py包含admin.autodiscover()以加載INSTALLED_APPS admin.py模塊。

# urls.py 
from django.conf.urls.defaults import * 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = patterns('', 
    ('^admin/', include(admin.site.urls)), 
) 

更多的信息在django docs

+3

從Django 1.7起,'admin.autodiscover()'[不再需要](https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#discovery-of-admin-files) – Alasdair 2014-09-02 09:25:26

4

我有經驗,有時在更改admin.py後,dev-sever不會重新啓動。在這種情況下,touch settings.py有幫助。出urls.py的一些線

+1

+1好小技巧 – 2009-12-09 00:39:21

0

評論看到文檔的更多細節

admin.autodiscover() 

urlpatterns = patterns('', 
    ('^admin/', include(admin.site.urls)), 
) 
13

在這種情況下也是一種很好的做法,以檢查用戶是否登錄到管理面板有權限來管理這樣一個模型。如果他們這樣做,那麼你可以改變你的代碼,以root身份訪問這些功能。

+1

你怎麼檢查?你如何授予你的特定模型的用戶權利? – emisilva 2016-04-19 16:55:35