模型没有出现在django admin中

Odi*_*aeb 53 django django-admin

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

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

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

我继续检查并重新检查并阅读以前类似的线程:已 注册的模型未显示在管理员 Django App中未显示在管理界面中

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

游戏应用中的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)
Run Code Online (Sandbox Code Playgroud)

游戏应用中的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)
Run Code Online (Sandbox Code Playgroud)

project 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',
)
Run Code Online (Sandbox Code Playgroud)

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)),
)
Run Code Online (Sandbox Code Playgroud)

艾伦.

jes*_*v18 70

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

from django.contrib import admin
from .models import MyModel

admin.site.register(MyModel)
Run Code Online (Sandbox Code Playgroud)

  • 因为人们在谷歌中输入"不在管理员中出现的模型",所以在他们找到的第一个SO页面上尝试所有解决方案,并且支持任何有效的工作:-D (19认同)
  • 这个答案如何得到最高评分?我的代码显示我确实有admin.site.register ...并且所选答案是正确的..所以wtf ... (5认同)
  • @ dios231 不,假设已经应用了迁移,它应该可以立即工作。 (2认同)

小智 19

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

从:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'game',
    ....
Run Code Online (Sandbox Code Playgroud)

至:

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'
Run Code Online (Sandbox Code Playgroud)

  • 这里的另一种可能性是您以无权更改该模型的用户身份登录管理界面; 在这种情况下,即使其他一切都正确,模型也不会显示.因此,在这些情况下,尝试调试时最好确保以管理员用户身份登录,以规范权限问题. (8认同)
  • 在哪里可以找到“ YOUR_PROJECT”的值,在哪里可以找到“ game”的值?我知道第一个问题对于大多数人来说可能是显而易见的,但是在我正在从事的项目中,命名被弄乱了 (2认同)

Pav*_*eev 16

与 Django 2.0 有同样的问题。

以下代码不起作用:

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

from users import models

admin.register(models.User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)

原来这条线

admin.register(models.User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)

本来应该

admin.site.register(models.User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)

由于我没有收到任何警告,因此也想在这里指出这一点。

  • 这对我有用。发生故障是一件非常愚蠢的事情 - 它应该记录在某处 - 或者发出警告/错误! (3认同)

Edu*_*uca 7

我知道这已经得到了回答和接受,但我想分享我对这个问题的解决方案,也许它会帮助别人.

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',
)
Run Code Online (Sandbox Code Playgroud)

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


Kev*_*val 7

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

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

使用管理面板授予权限:

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

选择并添加所需的权限 在此输入图像描述

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

替代方案:使用代码参考官方 Django 文档


bit*_*wit 5

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

希望这可以拯救某人,如果他们遇到我的问题。


pym*_*men 5

对于Django 1.10,帮助我最后通过(admin.ModelAdmin)的以下方式注册了Model

from django.contrib import admin

from .models import YourModel
admin.register(YourModel)(admin.ModelAdmin)
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,并帮助我发现了一个错误,但是您可能想要使用admin.site.register(YourModel)这是正确的方法。 (2认同)

Rob*_*aro 5

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

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

模型.py

class xxx(models.Model):
    ....
    def __str__(self):  # __str__ for Python 3, __unicode__ for Python 2
        return self.name
Run Code Online (Sandbox Code Playgroud)

管理员.py

from .models import xxx
admin.site.register(xxx)
Run Code Online (Sandbox Code Playgroud)