模型未显示在 django admin 上

问题描述 投票:0回答:5

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

来自 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 和 migrate,并且尝试将 admin.py 放入应用程序目录而不是项目目录中。它当前位于 [project_name]/[project_name] 目录(包含 settings.py、urls.py 和 wsgi.py 文件的目录)。

有什么建议吗?

python django django-models django-admin
5个回答
3
投票

我认为你必须向管理员注册你的模型。如果是简单的模型,我通常会这样做。

    from django.contrib import admin
    from .models import *

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

2
投票

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

来自设置.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 admin 时总是以这种形式导入:

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)

0
投票

愚蠢而明显的建议,但 Django 管理更改似乎并不总是立即被接受。如果一切看起来都配置正确(模型和管理员注册、应用程序安装等),请尝试重新启动服务器 - 在上面的所有建议之后,最终,这对我来说是成功的。


0
投票

为了解决我的问题:我将 admin.py 文件移到与 settings.py 相同的文件夹中。相应地调整了导入声明。并重新启动服务器,非常重要。

from django.contrib import admin

from <project_folder>.<app_folder>.models import  Notification
    
admin.site.register(Notification)

import .models
并将 admin.py 放入应用程序文件夹中不起作用。尽管尝试了很多小时。

© www.soinside.com 2019 - 2024. All rights reserved.