应用程序(或模型)未显示在 Django Admin 中

Posted

技术标签:

【中文标题】应用程序(或模型)未显示在 Django Admin 中【英文标题】:App (or Model) Not Showing up in Django Admin 【发布时间】:2011-10-17 03:55:47 【问题描述】:

注意:

Django 1.3 thingy 是我的实验性应用的名称。 已经学习 Python 和 Django 一周了。

我只是想让我的应用显示在管理区域中,但它不起作用。我已经在这个网站的其他地方阅读了关于这个问题的其他问题/答案,但没有一个能帮助我完成这项工作。我猜问题在于我如何导入模型,但对我来说看起来并没有错......

exp/settings.py的相关部分:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'thingy',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

exp/thingy/admin.py

from thingy.models import Daily
from django.contrib import admin

class Daily(admin.ModelAdmin):
    fields    = ['user', 'hours_as_sec']

admin.site.register(Daily)

exp/thingy/models.py

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Daily(models.Model):
    user=models.ForeignKey(User, unique=True)
    day = models.DateField()
    hours_as_sec = models.PositiveIntegerField()
    notes = models.TextField()

class Monthly(models.Model):
    user=models.ForeignKey(User, unique=True)
    month = models.DateField()
    hours_as_sec = models.PositiveIntegerField()
    notes = models.TextField()

class WorkedWith(models.Model):
    user=models.ForeignKey(User, unique=True)
    day = models.DateField()
    hours_as_sec = models.PositiveIntegerField()

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    url = models.URLField("Website", blank=True)
    company = models.CharField(max_length=50, blank=True)

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

我一无所知。有任何想法吗?我得到这个工作 in the official tutorial 但似乎无法让它在任何自制应用程序中工作,所以我知道我做错了什么,但我不知道是什么。

【问题讨论】:

【参考方案1】:

在您的 admin.py 中,您应该更改注册模型的方式。 更改类名

class Daily(admin.ModelAdmin):
    fields    = ['user', 'hours_as_sec']

class DailyAdmin(admin.ModelAdmin):
    fields    = ['user', 'hours_as_sec']

并注册如下:

admin.site.register(Daily,DailyAdmin)

【讨论】:

+1 请注意(对于阅读本文的其他人)本教程没有指定 ModelAdmin 子类开头,因此 admin.site.register(Model) 将起作用。 没错,如果您需要自定义类在管理站点上的显示方式,您只需指定 ModelAdmin 类,如下所示:docs.djangoproject.com/en/dev/intro/tutorial02/… 更改了它,清除了我的缓存,注销并重新登录......但它仍然无法正常工作。 等等,修复了它……但只有当我python manage.py runserver。如果我通过 Apache 查看它,它就不起作用。奇怪……很奇怪。不过谢谢,你帮了我很多。看起来我现在还有其他一些神秘的错误要追查。典型的。解决一个,得到另一个或几个其他。 应用可能无法显示的相关原因,对于那些使用 gunicorn 的用户:***.com/questions/12773763/…

以上是关于应用程序(或模型)未显示在 Django Admin 中的主要内容,如果未能解决你的问题,请参考以下文章

Django 错误:一个或多个模型未验证:

Django 模板未从数据库呈现

模型字段未在 Django Admin 中显示

Django - 模板中未显示注释

Django - 不使用表单或模型表单时在模板中呈现模型选择

如何扩展 django 管理视图?