如何拆分Django项目的“admin.py”?

13 投票
2 回答
4438 浏览
提问于 2025-04-16 23:56

我正在尝试把Django项目中的admin.py文件拆分成几个单独的文件,但没有成功。

我在网上找不到关于如何拆分它的信息,所以只能自己试试。以下是我尝试过的步骤:

  1. 创建一个名为separated_admins的文件夹,并在里面放一个空的__init__.py文件。
  2. separated_admins文件夹里创建一些文件,像这样:

    # file my_app/seperated_admins/Some_Model_admin.py
    
    from my_app.models import Some_Model
    from django.contrib import admin
    
    admin.site.register(Some_Model)
    
  3. admin.py文件中,我添加了类似这样的代码:

    from my_app.seperated_admins import *
    

但是我在我的管理网站上没有看到Some_Model。我的做法对吗?我该如何解决这个问题?

2 个回答

1

你应该从 Some_Model_admin 这个地方导入。

from my_app.seperated_admins.Some_Model_admin import *

这样的话,应该就没问题了。

另外,你也可以把所有分开的文件都导入到初始化文件里,这样的话

from my_app.seperated_admins import *

也应该能正常工作。

19

admin.py 其实就是一个 Python 模块。所以,把它拆分的正确方法是这样的:

  • 先创建一个叫 admins 的文件夹,而不是直接用 admin.py 文件。
  • 在这个 admins 文件夹里,可以用多个文件,比如你的 some_model_admin.py
  • admins 文件夹里创建一个 __init__.py 文件,把所有的文件都导入到这个文件里。
  • 你可能还想加一个 __all__,这样可以提供一个更整洁的接口。

撰写回答