模型没有出现在django admin中

时间:2010-06-06 16:48:14

标签: django django-admin

我已经为我自己的基金停止了几个django应用程序和东西,到目前为止一切都运行正常。

现在我刚刚创建了新项目(django 1.2.1)并且从第一时刻就遇到了麻烦。

我创建了新的应用程序 - 游戏和新模型游戏。我创建了admin.py并将相关内容放入其中。跑到syncdb然后去检查管理员。模型没有出现在那里。

我继续检查并仔细检查并阅读以前类似的主题: Registered models do not show up in admin Django App Not Showing up in Admin Interface

但就我所知,他们也不帮助我。也许其他人可以为我指出这一点。

游戏应用中的

models.py:

# -*- coding: utf-8 -*-
from django.db import models

class Game(models.Model):
      type = models.IntegerField(blank=False, null=False, default=1)
      teamone = models.CharField(max_length=100, blank=False, null=False)
      teamtwo = models.CharField(max_length=100, blank=False, null=False)
      gametime = models.DateTimeField(blank=False, null=False)
游戏应用中的

admin.py:

# -*- coding: utf-8 -*-
from jalka.game.models import Game
from django.contrib import admin

class GameAdmin(admin.ModelAdmin):
      list_display    = ['type', 'teamone', 'teamtwo', 'gametime']

admin.site.register(Game, GameAdmin)

项目settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

ROOT_URLCONF = 'jalka.urls'

TEMPLATE_DIRS = (
      "/home/projects/jalka/templates/"
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'game',
)

urls.py:

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
      # Example:
      # (r'^jalka/', include('jalka.foo.urls')),
      (r'^admin/', include(admin.site.urls)),
)

艾伦。

28 个答案:

答案 0 :(得分:60)

报告的问题可能是因为您跳过了注册管理站点的模型。这可以完成,在您的应用程序下创建一个admin.py文件,并在那里注册模型:

admin.site.register(MyModel)

答案 1 :(得分:19)

嗯...尝试在settings.py中更改你的应用程序:

发件人:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'game',
    ....

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'YOUR_PROJECT.game',# OR 'YOUR_PROJECT.Game'

答案 2 :(得分:6)

我知道这已经得到了回答和接受,但我觉得分享我对这个问题的解决方案是什么,也许它会帮助其他人。

我的INSTALLED_APPS看起来像这样:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',  # <---- this is my custom app
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    'south',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

看,我把我的应用程序放在Django的管理应用程序之前,显然它按顺序加载它们。我只是将我的应用程序移到了管理员的正下方,它开始显示:)

答案 3 :(得分:5)

对于Django 1.10,我帮助我按照与(admin.ModelAdmin)结尾的方式注册模型

from django.contrib import admin

from .models import YourModel
admin.register(YourModel)(admin.ModelAdmin)

答案 4 :(得分:4)

这可能非常罕见,但我今天遇到了一个问题,即我创建的admin.py文件的权限已损坏,因此django无法读取。我删除了文件并成功重新创建了它。

希望拯救某人,如果他们遇到我的问题就会绊倒。

答案 5 :(得分:3)

与Django 2.0存在同样的问题。

以下代码不起作用:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from users import models

admin.register(models.User, UserAdmin)

结果是

admin.register(models.User, UserAdmin)

应该是

admin.site.register(models.User, UserAdmin)

由于我没有收到任何警告,只是想在这里指出这件事。

答案 6 :(得分:3)

我努力注册我的模型(尝试了上面的所有建议),直到我做了一件非常简单的事情。我将我的admin.py从目录移到了项目目录 - 刷新了管理界面屏幕并将其移回并进入模型应用程序目录 - 它们都立即出现。我正在使用 PyCharm ,因此不确定是否会导致一些问题。

我的设置正是Django手册所说的 -

<强> models.py

from .models import xxx
admin.site.register(xxx)

<强> admin.py

{{1}}

答案 7 :(得分:2)

我正在使用数字海洋,也遇到了这个问题。解决方案是重启服务。我用了

service gunicorn restart

并且让模型出现

答案 8 :(得分:2)

我遇到了同样的问题,我解决了如下 首先转到您的 app.py 文件并复制类名。

from django.apps import AppConfig

class **ResumeConfig**(AppConfig):
name = 'resume'

现在转到 setting.py 并将其放置在应用程序定义中,如下所示:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
**'resume.apps.ResumeConfig'**
]

保存并运行终端中的命令

python manage.py makemigrations
python manage.py migrate

运行您的服务器并转到 /admin 你的问题会得到解决

答案 9 :(得分:1)

我还想补充一点,我做了所有这些答案所说的,除了我没有进入命令行sudo service apache2 restart,我需要让更改生效。 (因为我在亚马逊网络服务上的端口80上的实时服务器上进行测试。我也在使用Ubuntu操作系统。)这解决了它。我希望这可能会对某人有所帮助。

答案 10 :(得分:1)

我有同样的问题。我解决了这个问题,将管理员注册添加到admin.py。 而且我不需要增加额外的课程。

像:

from jalka.game.models import Game
from django.contrib import admin

admin.site.register(Game)

环境:Win10,Django 1.8

答案 11 :(得分:1)

我遇到了同样的问题, 重启后,我的开发服务器模型显示在管理页面中。

答案 12 :(得分:1)

您只需要注册您的模型。 到同一个应用的 admin.py 文件并写入,

from .models import "Modelname"

admin.site.register(("Modelname")) 
#create tuple to register more than one model

答案 13 :(得分:0)

要指出的另一件事是,您应确保已使用超级用户登录。

您可能是使用对视图容量具有有限权限的用户登录的,请尝试这样做。

在Django 2.0中,我仍然仅使用应用程序的名称(即“游戏”)注册应用程序。但是问题出在登录的用户权限中。

答案 14 :(得分:0)

我遇到了同样的问题。我的一些模型没有显示在 django admin dashbaord 中,因为我没有在我的 admin.py 文件中注册这些模型。

//Import all the models if you have many

from store.models import *

admin.site.register(Order)
admin.site.register(OrderItem)

这为我修复了它。只需注册并刷新您的网页,模型就会在管理仪表板中可见

答案 15 :(得分:0)

我正在使用本地代码更新远程服务器,但是远程服务器仍在管理屏幕中使用旧模型。在我的本地服务器和远程服务器之间,一切看起来都完全相同-数据库表匹配,并且代码也相同。

问题证明远程服务器正在使用venv环境运行。在运行source venv/bin/activate然后进行迁移之后,管理员显示了所有新模型。

答案 16 :(得分:0)

如果您要注册多个模型,请使用。

admin.site.register((Model1 , Model2 , Model3))

admin.site.register([Model1 , Model2 , Model3])

在您的 admin.py 文件中。

答案 17 :(得分:0)

我遇到了同样的问题。一切都做对了。但是我没有查看模型的权限。

只需提供所需的权限(查看/添加/编辑/等),然后再次检查。

使用管理面板授予权限:

  1. 使用您的超级用户帐户凭据登录网站。
  2. 管理站点的顶层显示您的所有模型,按“Django 应用程序”排序。在“身份验证和授权”部分,您可以点击“用户”或“群组”链接以查看其现有记录。
  3. 选择并添加所需的权限

选择并添加所需的权限 enter image description here

通过管理面板参考 this 添加/更改权限

替代方案: 使用代码 参考Official Django Doc

答案 18 :(得分:0)

我有同样的错误,但我没有在 INSALLED_APPS

中提到我的应用
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'myapp.apps.myappConfig',
)

我已经注册了模型,但忘记在 INSTALLED_APPS 中提及我的应用程序,在提及它对我有用后

答案 19 :(得分:0)

我所有的Admin类都放在一个文件夹./sites/中,该文件夹仅由于我的某些依赖而起作用。我修复了它们,其他所有东西都停止了工作。

当我将该目录从./sites/重命名为./admin/时,它起作用了。

答案 20 :(得分:0)

由于我在settings.py中使用ADMIN_REORDER(https://pypi.org/project/django-modeladmin-reorder/)来控制模型顺序,因此我的新模型未显示在“管理”页面上。将新模型添加到settings.py并显示。

答案 21 :(得分:0)

将您的管理代码更改为此:

from django.contrib import admin
from .models import Game

class GameAdmin(admin.ModelAdmin):
  list_display    = ['type', 'teamone', 'teamtwo', 'gametime']

admin.site.register(Game, GameAdmin)

还要确保该应用程序包含在 settings.py 文件中,并确保您为模型导入正确的名称。引起此问题的另一个原因是在模型字段的末尾添加逗号(,),就像是python列表一样。

答案 22 :(得分:0)

我只需要重新启动apache服务。服务apache2重新启动。然后出现了新模型。

答案 23 :(得分:0)

在docker容器中挂载的django实例上,我遇到了类似的问题。代码正确无误,但对admin.py的更改未出现在django admin中。

退出django进程并用docker-compose up重新安装容器后,添加的模型在django admin中可用。

答案 24 :(得分:0)

可能的原因之一是您没有关闭旧的python进程。

答案 25 :(得分:0)

您只需导入(包括)此内容

from models import *

答案 26 :(得分:0)

错误可能出现在你的“def”的views.py,你应该检查是否有

If mymodel.is_valid():
mymodel = model.save()

我会给你一些我的代码,以便你理解它

@login_required(login_url='/home/')
def ask_question(request):
user_asking = UserAsking()

if request.method == "POST":
    user_asking = UserAsking(request.POST)

    if user_asking.is_valid():
        user_asking.save()

    return redirect(home)

return render(request, 'app/ask_question.html', {
    'user_asking': user_asking,
})

`UserAsking是一种形式。 我希望我能帮助你

答案 27 :(得分:0)

除了Saff所说的,你的settings.py应该是这样的:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'YOUR_PROJECT',
    # And
    'YOUR_PROJECT.Foo',
    'YOUR_PROJECT.Bar',
)