gpt4 book ai didi

python - 项目的 admin.py,而不是应用程序

转载 作者:太空狗 更新时间:2023-10-30 00:17:24 26 4
gpt4 key购买 nike

如何指定项目级别的 admin.py?

我前段时间问过这个问题,由于在这个问题上缺乏活跃度,我刚刚获得了 Tumbleweed 奖! >_<

项目:

  • 设置.py
  • admin.py(这是我要开始工作的)
  • ...
  • 应用程序
    • admin.py(我知道怎么做)

例如admin.autodiscover()一般放在项目级urls.py(是的,1.7会自动包含)

我想将这个和下面的移动到他们自己的 admin.py 文件中:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active')
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
admin.autodiscover()

我尝试这样做,制作一个 admin.py 文件并将代码添加到其中。没用。

我尝试添加一个名为 admin 的项目级文件夹,添加一个 __init__.py 并将 admin.py 放入 admin 文件夹中。没用

此外,我尝试将此 admin 文件夹添加到 settings.py 中的 INSTALLED_APPS。运气不好。

最佳答案

来自 admin.autodiscover 文档字符串:

Auto-discover INSTALLED_APPS admin.py modules and fail silently when not present. This forces an import on them to register any admin bits they may want.

这里是完整的函数,有很好的记录:

def autodiscover():
"""
Auto-discover INSTALLED_APPS admin.py modules and fail silently when
not present. This forces an import on them to register any admin bits they
may want.
"""

import copy
from django.conf import settings
from django.utils.importlib import import_module
from django.utils.module_loading import module_has_submodule

for app in settings.INSTALLED_APPS:
mod = import_module(app)
# Attempt to import the app's admin module.
try:
before_import_registry = copy.copy(site._registry)
import_module('%s.admin' % app)
except:
# Reset the model registry to the state before the last import as
# this import will have to reoccur on the next request and this
# could raise NotRegistered and AlreadyRegistered exceptions
# (see #8245).
site._registry = before_import_registry

# Decide whether to bubble up this error. If the app just
# doesn't have an admin module, we can ignore the error
# attempting to import it, otherwise we want it to bubble up.
if module_has_submodule(mod, 'admin'):
raise

所以自动发现唯一能为​​你做的就是在已安装的应用程序目录中寻找一些名为 admin.py 的模块,因此你可以将 admin.py 放在你想要的地方,只需确保导入它,这使得其中的代码(模型注册等)得到执行。

重要提示:我不确定导入自定义路径 admin.py 的正确时机。但可以肯定的是,您必须在加载所有相关应用程序后导入它。

关于python - 项目的 admin.py,而不是应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24128386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com