Django 管理站点 - 放在哪里 admin.py

Django Admin site - where to put admin.py

我在工作中继承了一个 Django 应用程序,我正在尝试进行一些改进。该应用程序运行正常,但是有一些维护工作直接在数据库 tables 中完成。我想设置管理站点以避免直接编辑数据库 table(s) 内容。

我对 Django 的经验很少,并且看过很多教程,但是这个应用程序结构与我以前见过的任何结构都不匹配。

该应用程序是使用 Django 3.2.9(来自 requirements.txt)构建的,生产版本托管在 App Engine 上的 GCP 中,具有 MySQL CloudSQL 实例。我目前正在通过 manage.py runserver 在本地机器上进行测试(使用本地 MySQL 实例。)在某些时候我将更新 Django 的版本。

代码结构如下

project/  
|---manage.py  
|---requirements.txt  
+---project_app/  
|----|----settings.py  
|----|----urls.py  
+---app1/  
|---+---models/  
|----|---+---app1/  
|----|----|----|----app1.py  
|---+---urls/  
|----|---+---app1/  
|----|----|----|----routing.py  
|---+---views/  
|----|---+---app1/  
|----|----|----|----view.py  
+---app2  
|---+---similar structure to app1  
+---app3  
|---+---similar structure to app1  
+---app4  
|---+---similar structure to app1  

我的问题是,我应该在 app1 应用程序中创建哪个文件夹 admin.py 以导入模型供管理站点管理?

管理站点正在加载并在列表中显示用户和组 table(以及 Python 社交身份验证和身份验证令牌 table)。

关于管理站点如何定位 admin.py 文件,我能找到的文档很少。我还尝试使用 Procmon (Windows) 来查看它是否尝试在任何文件夹中查找 admin.py。 Procmon 没有看到任何 admin.py 文件的任何读取,除了在 venv.

中的站点包下

感谢您的帮助

更新:能够解决这个问题

TL;DR admin.py 进入与“导入管理员”行相同的文件夹。
添加

from django.contrib import admin

进入 app1 中的 app.py 并在同一文件夹中有一个 admin.py 并进行管理配置确实有效

project/  
|---manage.py  
|---requirements.txt  
+---project_app/  
|----|----settings.py  
|----|----urls.py  
+---app1/  
|----app.py  
|----admin.py  
|---+---models/  
|----|----models_file.py
|---+---urls/  
|----|---+---app1/  
|----|----|----|----routing.py  
|---+---views/  
|----|---+---app1/  
|----|----|----|----view.py  
+---app2  
|---+---similar structure to app1  

一些额外的东西

  1. 如果您想自定义管理站点模型,INSTALLED_APPS 的顺序很重要
    我想从管理员中删除 social_django 模型,这需要将 social_django 和 social_core 放在 INSTALLED_APPS

    中的 app1 之上
  2. 此应用程序使用 Django REST Framework 和 rest_framework_simplejwt 包,其中包括令牌模型,默认情况下显示在管理员中。确保 DRF 和 DRF jwt 在 INSTALLED_APPS 中的 app1 之前,而不是在 admin.py

    中取消注册

最终结果是一个 admin.py 文件,看起来像这样

from django.contrib import admin

from django.contrib.auth.models import User, Group
from social_django.models import Association, Nonce, UserSocialAuth
from rest_framework.authtoken.models import TokenProxy
# My app1 models Imports

# Remove Django REST Framework models from admin.  
admin.site.unregister(TokenProxy)

# Remove Default user and group models provided by Django
admin.site.unregister(User)
admin.site.unregister(Group)

# Remove Social Auth models from social-auth-app-django package
admin.site.unregister(Association)
admin.site.unregister(Nonce)
admin.site.unregister(UserSocialAuth)

# My app1 models site.unregister