首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django管理员没有显示模型

Django管理员没有显示模型
EN

Stack Overflow用户
提问于 2014-07-17 21:07:14
回答 6查看 24.2K关注 0票数 17

如果我能搞清楚为什么我的模特没有在管理员中露面,那我就该死了。

models.py看起来是这样的:

代码语言:javascript
复制
from django.db import models

class Publication(models.Model):
    title = models.CharField(max_length=255)

    def __unicode__(self):
        return unicode(self.title)

admin.py

代码语言:javascript
复制
from django.contrib import admin
from publications.models import Publication

admin.site.register(Publication)

settings.py

代码语言:javascript
复制
...

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',
)

目录结构:

代码语言:javascript
复制
xrdb/
├── manage.py
├── publications
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── xrdb
    ├── __init__.py
    ├── admin.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

在管理页面上,我可以看到组、用户和站点。没有出版物!!

有什么帮助吗?谢谢!!

编辑:我已经同步和迁移了,admin.autodiscover()在urls.py中。

编辑II:上面更新的文件。添加了目录结构。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-07-17 21:42:34

更改models.py文件后是否运行syncdb?

转到项目的基本目录(其中有manage.py )并运行

代码语言:javascript
复制
python manage.py syncdb

编辑:既然您已经尝试过这样做,那么向类中添加一个str或unicode方法如下:

代码语言:javascript
复制
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

编辑2:有趣的是,我今天在做自己的项目时遇到了同样的问题。如果上面的str代码仍然不适用于您,请再次检查您是否已经在admin.py中注册了模型:

代码语言:javascript
复制
from MyApp.models import MyModel
admin.site.register(MyModel)

编辑3:最后,确保使用上述代码的admin.py文件实际上位于所讨论的应用程序的目录中(即与定义MyModel的models.py的目录相同)。

票数 21
EN

Stack Overflow用户

发布于 2019-04-25 08:07:58

请确保您正在打电话:

admin.site.register(<model-name>)

而不是

admin.register(<model-name>)

这就是我的原因。

票数 20
EN

Stack Overflow用户

发布于 2017-01-14 19:49:05

再次检查您的权限--即:如果您认为您的用户是超级用户,只需去查看以确保!如果您的用户不是超级用户,请查看您要登录的用户下的“身份验证和授权”>“用户”,并查看“用户权限:”是否包含所述应用程序的模型。

在追逐了这段时间之后,我意识到我的用户并不是真正的超级用户。正如您将在许多相关文章中看到的那样,如果用户没有正确的权限,应用程序很容易不显示在Admin中,如下所示:

从这里可以看出,用户2对“完成”应用程序的模型没有所需的权限--仅在“计时”应用程序的模型上。

我很确定这是个超级用户(但它不是)。我想,我必须降低我的权限来解决另一个用户已经看到的问题,或者提供更有代表性的使用该系统的体验。

PS这个问题在于,任何使用python manage.py createsuperuser启动的干净数据库都会显示所有已注册的应用程序/模型,而现有的数据库(其中的权限可能更细微)只显示一些注册的应用程序/模型。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24813536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档