feat: 优化获取所有项目下的app里的models配置项

This commit is contained in:
李强
2023-11-30 20:23:52 +08:00
parent 5729aeb521
commit 120c737de7
3 changed files with 29 additions and 15 deletions

View File

@@ -43,10 +43,8 @@ sys.path.insert(0, os.path.join(PLUGINS_PATH))
DEBUG = locals().get("DEBUG", True) DEBUG = locals().get("DEBUG", True)
ALLOWED_HOSTS = locals().get("ALLOWED_HOSTS", ["*"]) ALLOWED_HOSTS = locals().get("ALLOWED_HOSTS", ["*"])
# Application definition # 列权限需要排除的App应用
CUSTOM_APPS = [ COLUMN_EXCLUDE_APPS = ['channels', 'captcha'] + locals().get("COLUMN_EXCLUDE_APPS", [])
"dvadmin.system",
]
INSTALLED_APPS = [ INSTALLED_APPS = [
"django.contrib.auth", "django.contrib.auth",
@@ -60,8 +58,8 @@ INSTALLED_APPS = [
"corsheaders", # 注册跨域app "corsheaders", # 注册跨域app
"drf_yasg", "drf_yasg",
"captcha", "captcha",
'channels', "channels",
*CUSTOM_APPS, "dvadmin.system",
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@@ -44,4 +44,5 @@ LOGIN_NO_CAPTCHA_AUTH = True
# ================================================= # # ================================================= #
ALLOWED_HOSTS = ["*"] ALLOWED_HOSTS = ["*"]
CUSTOM_APPS = [] # 列权限中排除App应用
COLUMN_EXCLUDE_APPS = []

View File

@@ -13,6 +13,7 @@ from django.db import models
from django.conf import settings from django.conf import settings
from application import settings from application import settings
table_prefix = settings.TABLE_PREFIX # 数据库表名前缀 table_prefix = settings.TABLE_PREFIX # 数据库表名前缀
@@ -71,10 +72,13 @@ class CoreModel(models.Model):
id = models.BigAutoField(primary_key=True, help_text="Id", verbose_name="Id") id = models.BigAutoField(primary_key=True, help_text="Id", verbose_name="Id")
description = models.CharField(max_length=255, verbose_name="描述", null=True, blank=True, help_text="描述") description = models.CharField(max_length=255, verbose_name="描述", null=True, blank=True, help_text="描述")
creator = models.ForeignKey(to=settings.AUTH_USER_MODEL, related_query_name='creator_query', null=True, creator = models.ForeignKey(to=settings.AUTH_USER_MODEL, related_query_name='creator_query', null=True,
verbose_name='创建人', help_text="创建人", on_delete=models.SET_NULL, db_constraint=False) verbose_name='创建人', help_text="创建人", on_delete=models.SET_NULL,
db_constraint=False)
modifier = models.CharField(max_length=255, null=True, blank=True, help_text="修改人", verbose_name="修改人") modifier = models.CharField(max_length=255, null=True, blank=True, help_text="修改人", verbose_name="修改人")
dept_belong_id = models.CharField(max_length=255, help_text="数据归属部门", null=True, blank=True, verbose_name="数据归属部门") dept_belong_id = models.CharField(max_length=255, help_text="数据归属部门", null=True, blank=True,
update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间", verbose_name="修改时间") verbose_name="数据归属部门")
update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间",
verbose_name="修改时间")
create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间", create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间",
verbose_name="创建时间") verbose_name="创建时间")
@@ -136,12 +140,23 @@ def get_model_from_app(app_name):
def get_custom_app_models(app_name=None): def get_custom_app_models(app_name=None):
"""获取所有项目下的app里的models""" """
获取所有项目下的app里的models
"""
if app_name: if app_name:
return get_model_from_app(app_name) return get_model_from_app(app_name)
all_apps = apps.get_app_configs()
res = [] res = []
for app in settings.CUSTOM_APPS: for app in all_apps:
all_models = get_model_from_app(app) if app.name.startswith('django'):
for model in all_models: continue
res.append(model) if app.name in settings.COLUMN_EXCLUDE_APPS:
continue
try:
all_models = get_model_from_app(app.name)
if all_models:
for model in all_models:
res.append(model)
except Exception as e:
pass
return res return res