模特没有在django admin

时间:2017-04-18 18:47:39

标签: python django django-models django-admin

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

来自settings.py的我的INSTALLED_APPS:

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放在app目录而不是项目目录中。它当前位于[project_name] / [project_name]目录(包含settings.py,urls.py和wsgi.py文件的目录)。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

当我使用Django管理员时,总是以这种形式导入:

from django.contrib import admin

在课堂上继承:

class HomeAdmin(admin.ModelAdmin):

所以你的admin.py文件就像这样:

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)

答案 1 :(得分:1)

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

    from django.contrib import admin
    from .models import *

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

答案 2 :(得分:1)

我放弃了尝试诊断我的问题,然后重新启动了项目并开始了。它现在工作正常。老实说,我不确定问题是什么。如果有人好奇,这是我的新文件:

来自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)

老实说,我不明白为什么以前没有工作。如果有更多洞察力的人能发现一些差异,我不能告诉我。