模型未在Django后台显示

104 投票
32 回答
117844 浏览
提问于 2025-04-15 23:37

我创建了几个Django应用程序,都是为了自己玩玩,到目前为止一切都运作得很好。

现在我刚刚创建了一个新项目(Django 1.2.1),从一开始就遇到了麻烦。

我创建了一个新应用 - game,还有一个新模型 Game。我创建了 admin.py 并把相关内容放进去。然后我运行了 syncdb,去管理员界面查看,但模型没有显示出来。

我检查了好几遍,还看了一些之前类似的问题讨论:

注册的模型没有出现在管理员界面 Django 应用没有出现在管理员界面

但就我所知,这些讨论对我没有帮助。也许其他人能帮我指出问题所在。

game 应用中的 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)

game 应用中的 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)),
)

32 个回答

36

我在使用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)

因为我没有收到任何警告,所以想在这里也提一下这个问题。

210

这个问题可能是因为你没有把模型注册到管理后台。要解决这个问题,你需要在你的应用程序下创建一个 admin.py 文件,然后在这个文件里注册你的模型,方法如下:

from django.contrib import admin
from .models import MyModel

admin.site.register(MyModel)
39

嗯……试着在你的设置文件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'

撰写回答