模型没有显示在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文件的目录)。
有什么建议吗?
当我使用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)
我认为你必须将你的模型注册到管理员。我通常这样做,如果它是一个简单的模型。
from django.contrib import admin
from .models import *
# Register your models here.
@admin.register(Model)
class ModelAdmin(admin.ModelAdmin): pass
我试着用装饰器和'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)
我真的不明白为什么它以前没有工作。如果有更多见解的人可以发现我不能请让我知道的一些差异。
如何删除'admin.autodiscover()'? –
不变,不幸的是 – Jay
什么是'home.apps.HomeConfig'?如果您的应用程序被称为“家”,安装的应用程序应列出“家”。也把它放在列表的顶部,而不是底部。 – allcaps