本次搭建基于Windows 10/11系统,使用Python+轻量Django框架实现,无需购买服务器,本地电脑即可运行。
python --version,显示“Python 3.10.11”即为成功django-admin --version,显示“4.2.13”即为依赖就绪TYDangAn作为根目录cd D:\TYDangAn切换路径,再执行django-admin startproject TYDA_Server创建项目cd TYDA_Server,再执行python manage.py startapp TYDA_App创建太原档案核心应用TYDA_Server/settings.py文件,按以下要求修改(可直接覆盖对应区域):
INSTALLED_APPS,替换为:
```
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TYDA_App',
'django_filters',
]
```
LANGUAGE_CODE和TIME_ZONE,替换为:
```
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False
```
本次简化采用《山西省归档文件整理规则(2021版)》中小企/社区常用的3个核心字段:档号、归档单位、保管期限,扩展5个必填字段:档案名称、扫描件(可选)、归档人、归档日期、备注。
TYDA_App/models.py,完全替换为以下可直接复制的内容:
```
from django.db import models
from django.contrib.auth.models import User
class DangAn(models.Model):
简化晋档核心字段
DANGHAO_PREFIX = (
('TY-', '太原市统一前缀'),
('TY-XXQ-', '太原XX区(自行替换)'),
)
danghao_prefix = models.CharField(max_length=10, choices=DANGHAO_PREFIX, default='TY-', verbose_name='档号前缀')
danghao_suffix = models.CharField(max_length=20, verbose_name='档号后缀(按年份-序号填,如2024-001)')
guicun_danwei = models.CharField(max_length=50, verbose_name='归档单位')
BAOGUAN_QIXIAN = (
('永久', '永久'),
('30年', '30年'),
('10年', '10年'),
)
baoguan_qixian = models.CharField(max_length=5, choices=BAOGUAN_QIXIAN, verbose_name='保管期限')
扩展必填字段
dangan_mingcheng = models.CharField(max_length=100, verbose_name='档案名称')
saomiaojian = models.ImageField(upload_to='saomiaojian/%Y/%m/%d/', blank=True, null=True, verbose_name='扫描件(可选,支持JPG/PNG)')
guicun_ren = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='归档人')
guicun_date = models.DateField(auto_now_add=True, verbose_name='归档日期')
beizhu = models.TextField(max_length=500, blank=True, null=True, verbose_name='备注')
class Meta:
verbose_name = '太原档案'
verbose_name_plural = '太原档案'
unique_together = ('danghao_prefix', 'danghao_suffix') 档号不能重复
def __str__(self):
return f'{self.danghao_prefix}{self.danghao_suffix} - {self.dangan_mingcheng}'
```

Django自带的管理界面无需开发,简单配置即可实现太原档案的增删改查、筛选、导出功能,零门槛使用。
TYDA_App/admin.py,完全替换为以下内容:
```
from django.contrib import admin
from .models import DangAn
from django_filters import DateFilter, ChoiceFilter
from django.contrib.admin import DateFieldListFilter
class DangAnFilter(admin.SimpleListFilter):
title = '档号前缀'
parameter_name = 'danghao_prefix'
def lookups(self, request, model_admin):
return DangAn.DANGHAO_PREFIX
def queryset(self, request, queryset):
if self.value():
return queryset.filter(danghao_prefix=self.value())
return queryset
@admin.register(DangAn)
class DangAnAdmin(admin.ModelAdmin):
list_display = ('danghao_prefix', 'danghao_suffix', 'dangan_mingcheng', 'guicun_danwei', 'baoguan_qixian', 'guicun_ren', 'guicun_date')
list_filter = (DangAnFilter, 'baoguan_qixian', ('guicun_date', DateFieldListFilter))
search_fields = ('danghao_prefix', 'danghao_suffix', 'dangan_mingcheng', 'guicun_danwei', 'beizhu')
readonly_fields = ('guicun_ren', 'guicun_date')
list_per_page = 20
def save_model(self, request, obj, form, change):
if not change:
obj.guicun_ren = request.user
super().save_model(request, obj, form, change)
```
python manage.py createsuperuser,按提示输入用户名(如tyda_admin)、邮箱(可留空直接回车)、密码(至少8位,不要纯数字,输入时不显示)python manage.py runserver,看到Starting development server at http://127.0.0.1:8000/即为成功如需同一办公室其他电脑访问,需做以下操作:
TYDA_Server/settings.py,找到ALLOWED_HOSTS,替换为:
```
ALLOWED_HOSTS = ['']
```
ipconfig,找到“无线局域网适配器WLAN”或“以太网适配器以太网”下的“IPv4 地址”(如192.168.1.100)start_lan.bat,写入以下内容(替换为你的IPv4地址):
```
@echo off
cd /d D:\TYDangAn\TYDA_Server
python manage.py runserver 192.168.1.100:8000
pause
```
start_lan.bat启动服务器,其他电脑访问http://你的IPv4地址:8000/admin即可(需确保在同一局域网)
档案整理行业认证,这玩意儿到底是不是你的职场“硬通货”?