Rob*_*b L 14 django django-admin
如果我能弄清楚为什么我的模型没有在管理员中显示,我该死的.
models.py看起来像这样:
from django.db import models
class Publication(models.Model):
title = models.CharField(max_length=255)
def __unicode__(self):
return unicode(self.title)
Run Code Online (Sandbox Code Playgroud)
admin.py
from django.contrib import admin
from publications.models import Publication
admin.site.register(Publication)
Run Code Online (Sandbox Code Playgroud)
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',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'south',
'publications',
)
Run Code Online (Sandbox Code Playgroud)
目录结构:
xrdb/
??? manage.py
??? publications
? ??? __init__.py
? ??? models.py
? ??? tests.py
? ??? views.py
??? xrdb
??? __init__.py
??? admin.py
??? settings.py
??? urls.py
??? wsgi.py
Run Code Online (Sandbox Code Playgroud)
从管理页面,我可以看到组,用户和站点.没有出版物!!
任何帮助?谢谢!!
编辑:我已经同步和迁移,admin.autodiscover()在urls.py中.
编辑II:更新了上面的文件.添加了目录结构.
Gra*_*ave 16
更改models.py文件后是否运行了syncdb?
转到项目的基本目录(manage.py所在的位置)并运行
python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
编辑:既然你已经尝试过这个,那么在你的类中添加一个str或unicode方法,如下所示:
class Resource(models.Model):
title = models.CharField(max_length=128, blank=True)
def __str__(self): # __str__ for Python 3, __unicode__ for Python 2
return self.name
Run Code Online (Sandbox Code Playgroud)
编辑2:有趣的是,我今天在我自己的项目上遇到了完全相同的问题.如果上面的str代码仍然不适合您,请仔细检查您是否在admin.py中实际注册了模型:
from MyApp.models import MyModel
admin.site.register(MyModel)
Run Code Online (Sandbox Code Playgroud)
编辑3:最后,确保带有上述代码的admin.py文件实际位于相关应用程序的目录中(即与models.py定义MyModel的目录相同).
确保您正在致电:
admin.site.register(<model-name>)
并不是
admin.register(<model-name>)
这就是我的原因。
请仔细检查您的权限-即:如果您认为您的用户是超级用户,则只需确定一下即可!如果您的用户不是超级用户,请在您以登录身份登录的用户下的“身份验证和授权”›“用户”中查找,并查看“用户权限:”是否包括所涉及应用程序的模型。
在追逐了我不想承认的时间之后,我意识到我的用户实际上不是超级用户。正如您将在许多相关文章中看到的那样,如果用户没有正确的权限,则应用程序很容易在Admin中不显示,例如:

如您所见,用户2对“完成”应用程序的模型没有必需的权限-仅对“计时”应用程序的模型具有权限。
我相当确定这是一个超级用户(但不是)。我认为要么必须减少我的权限才能解决其他用户所遇到的问题,要么要提供使用该系统的更具代表性的体验。
PS对此的一个赠品是,您使用进入的任何干净的数据库python manage.py createsuperuser都将显示您所有已注册的应用/模型,而现有数据库(权限可能会更细微的变化)将仅显示您的某些已注册应用/楷模。
| 归档时间: |
|
| 查看次数: |
14999 次 |
| 最近记录: |