feat: 添加系统配置表单

This commit is contained in:
XIE7654
2025-09-27 10:33:54 +08:00
parent aaace900a6
commit 667ab9c02a
12 changed files with 596 additions and 0 deletions

View File

@@ -3,7 +3,13 @@ from datetime import datetime
from django.core.management.base import BaseCommand
from system.models import Menu, MenuMeta
import re
"""
自动生成 菜单 代码的 Django 管理命令
使用方法: python manage.py gen_menu_json <app> <model> <parent>
例如: python manage.py gen_menu_json system Config 系统管理
"""
# gen_menu_json --app system --model Config --parent 系统管理
def camel_to_snake(name):
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()

View File

@@ -0,0 +1,128 @@
# Generated by Django 5.2.1 on 2025-09-27 02:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("system", "0003_loginlog_location"),
]
operations = [
migrations.CreateModel(
name="Config",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
(
"name",
models.CharField(
db_comment="参数名称",
default="",
max_length=100,
verbose_name="参数名称",
),
),
(
"key",
models.CharField(
db_comment="参数键名",
default="",
max_length=100,
verbose_name="参数键名",
),
),
(
"value",
models.CharField(
db_comment="参数键值",
default="",
max_length=500,
verbose_name="参数键值",
),
),
(
"config_type",
models.BooleanField(
db_comment="系统内置1是 0否",
default=False,
verbose_name="系统内置",
),
),
],
options={
"verbose_name": "参数配置",
"verbose_name_plural": "参数配置",
"ordering": ["-id"],
},
),
]

View File

@@ -306,3 +306,26 @@ class LoginLog(CoreModel):
def __str__(self):
return f"{self.username} - {self.user_ip}"
class Config(CoreModel):
"""
参数配置表
"""
name = models.CharField(max_length=100, default='', db_comment='参数名称', verbose_name='参数名称')
key = models.CharField(max_length=100, default='', db_comment='参数键名', verbose_name='参数键名')
value = models.CharField(max_length=500, default='', db_comment='参数键值', verbose_name='参数键值')
config_type = models.BooleanField(
default=False,
db_comment='系统内置1是 0否',
verbose_name='系统内置'
)
class Meta:
verbose_name = '参数配置'
verbose_name_plural = verbose_name
ordering = ['-id']
def __str__(self):
return f"{self.name}({self.key})"

View File

@@ -13,6 +13,7 @@ router.register(r'dict_type', views.DictTypeViewSet)
router.register(r'post', views.PostViewSet)
router.register(r'user', views.UserViewSet)
router.register(r'login_log', views.LoginLogViewSet)
router.register(r'config', views.ConfigViewSet)
urlpatterns = [
path('', include(router.urls)),

View File

@@ -7,6 +7,7 @@ __all__ = [
'DictTypeViewSet',
'PostViewSet',
'UserViewSet',
'ConfigViewSet',
'LoginLogViewSet',
]
@@ -18,4 +19,5 @@ from system.views.role import RoleViewSet
from system.views.dept import DeptViewSet
from system.views.post import PostViewSet
from system.views.login_log import LoginLogViewSet
from system.views.config import ConfigViewSet
from system.views.user import *

View File

@@ -0,0 +1,37 @@
from system.models import Config
from utils.serializers import CustomModelSerializer
from utils.custom_model_viewSet import CustomModelViewSet
from django_filters import rest_framework as filters, CharFilter
class ConfigSerializer(CustomModelSerializer):
"""
参数配置 序列化器
"""
class Meta:
model = Config
fields = '__all__'
read_only_fields = ['id', 'create_time', 'update_time']
class ConfigFilter(filters.FilterSet):
name = CharFilter(field_name='name', lookup_expr='icontains')
key = CharFilter(field_name='key', lookup_expr='icontains')
value = CharFilter(field_name='value', lookup_expr='icontains')
remark = CharFilter(field_name='remark', lookup_expr='icontains')
class Meta:
model = Config
fields = ['id', 'remark', 'creator', 'modifier', 'is_deleted', 'name', 'key', 'value', 'config_type']
class ConfigViewSet(CustomModelViewSet):
"""
参数配置 视图集
"""
queryset = Config.objects.filter(is_deleted=False).order_by('-id')
serializer_class = ConfigSerializer
filterset_class = ConfigFilter
search_fields = ['name'] # 根据实际字段调整
ordering_fields = ['create_time', 'id']
ordering = ['-create_time']