首页 文章

模特没有在django admin上显示

提问于
浏览
0

我刚刚开始使用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

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

    from django.contrib import admin
        from .models import *
    
        # Register your models here.
        @admin.register(Model)
        class ModelAdmin(admin.ModelAdmin): pass
    
  • 0

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

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

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

  • 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)
    

相关问题