模型未在Django后台显示
我创建了几个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'