管理类未在 django 中定义

Posted

技术标签:

【中文标题】管理类未在 django 中定义【英文标题】:Admin class not defined in django 【发布时间】:2018-07-06 02:01:42 【问题描述】:

我尝试将我的模型添加到管理员中。 但是在我为 model.admin 创建类时运行错误 我不知道为什么我的班级阅读没有定义。

我使用 python 3.6 和 Django 2.0

    from django.contrib import admin
from .models import Post


# Register your models here.


class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'author', 'publish', 'status')
    list_filter = ('status', 'created', 'publish', 'author')
    search_fields = ('title', 'body')
    raw_id_fields = ('author')
    date_hierarchy = ('publish')
    ordering = ['status', 'publish']

    admin.site.register(Post, PostAdmin)

这里是我的调试错误:

"C:\Program Files\JetBrains\PyCharm 2017.3\bin\runnerw.exe" C:\Users\FIANUAENA\PycharmProjects\mysite\venv\Scripts\python.exe C:/Users/FIANUAENA/PycharmProjects/mysite/manage.py 运行服务器 8000 .wrapper 在 0x05E1EE88 处启动的线程中未处理的异常> 回溯(最近一次通话最后): 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\utils\autoreload.py”, 第 225 行,在包装器中 fn(*args, **kwargs) 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\core\management\commands\runserver.py”, 第 113 行,inner_run autoreload.raise_last_exception() 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\utils\autoreload.py”, 第 248 行,在 raise_last_exception 中 引发_异常[1] 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\core\management__init__.py”, 第 327 行,执行中 autoreload.check_errors(django.setup)() 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\utils\autoreload.py”, 第 225 行,在包装器中 fn(*args, **kwargs) 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django__init__.py”, 第 24 行,在设置中 apps.populate(settings.INSTALLED_APPS) 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\apps\registry.py”, 第 120 行,在填充 app_config.ready() 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\contrib\admin\apps.py”, 第 23 行,准备就绪 self.module.autodiscover() 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\contrib\admin__init__.py”, 第 26 行,在自动发现中 autodiscover_modules('admin', register_to=site) 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\site-packages\django\utils\module_loading.py”, 第 47 行,在 autodiscover_modules 中 import_module('%s.%s' % (app_config.name, module_to_search)) 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\venv\lib\importlib__init__.py”, 第 126 行,在 import_module 中 return _bootstrap._gcd_import(name[level:], package, level) _gcd_import 中的文件“”,第 994 行 _find_and_load 中的文件“”,第 971 行 文件“”,第 955 行,在 _find_and_load_unlocked _load_unlocked 中的文件“”,第 665 行 文件“”,第 678 行,在 exec_module 中 _call_with_frames_removed 中的文件“”,第 219 行 文件“C:\Users\FIANUAENA\PycharmProjects\mysite\blog\admin.py”,第 8 行,在 类 PostAdmin(admin.ModelAdmin): PostAdmin 中的文件“C:\Users\FIANUAENA\PycharmProjects\mysite\blog\admin.py”,第 16 行 admin.site.register(发布,PostAdmin) NameError: 未定义名称“PostAdmin”

谢谢你的帮助

【问题讨论】:

【参考方案1】:

取消您的管理员调用:

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'author', 'publish', 'status')
    list_filter = ('status', 'created', 'publish', 'author')
    search_fields = ('title', 'body')
    raw_id_fields = ('author')
    date_hierarchy = ('publish')
    ordering = ['status', 'publish']

admin.site.register(Post, PostAdmin)

【讨论】:

【参考方案2】:

谢谢,我的问题已经解决了。 只需更改我的代码:

来自:

from .models import Post

到:

from blog.models import *

【讨论】:

这些导入中的任何一个都应该工作。正如 Stolson 所说,问题在于缩进。 除了这是错误的答案之外,导入 * 不是好的做法

以上是关于管理类未在 django 中定义的主要内容,如果未能解决你的问题,请参考以下文章

动态类未在浏览器顺风中呈现 - Vue

jQuery 开关类未在 Chrome 中正确激活

Django 自定义用户创建未在管理站点中显示自定义字段

Tailwind css 类未在 Storybook 构建中显示

Django Modeltranslation:TranslationAdmin 类未复制正确的小部件

Django中使用Celery,定制应用程序中定义的shared_task未在定期任务管理页面的注册任务中显示