a40a0137cf
功能: - Django + MySQL + 深色主题 - 资产增删改查(含资产编号、BMC地址、设备位置、备注) - Excel导入导出(分类自动创建) - 设备分类管理 - 资产变更记录追踪 - 质保到期提醒 - 用户认证系统 - Docker部署支持
82 라인
5.4 KiB
Python
82 라인
5.4 KiB
Python
# Generated by Django 5.2.13 on 2026-04-24 10:33
|
|
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Category',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=50, unique=True, verbose_name='分类名称')),
|
|
('description', models.CharField(blank=True, default='', max_length=200, verbose_name='描述')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
|
],
|
|
options={
|
|
'verbose_name': '设备分类',
|
|
'verbose_name_plural': '设备分类',
|
|
'ordering': ['name'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Asset',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('asset_number', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='资产编号')),
|
|
('name', models.CharField(max_length=100, verbose_name='设备名称')),
|
|
('brand', models.CharField(blank=True, default='', max_length=50, verbose_name='品牌')),
|
|
('model', models.CharField(blank=True, default='', max_length=100, verbose_name='型号')),
|
|
('serial_number', models.CharField(blank=True, db_index=True, default='', max_length=100, verbose_name='序列号')),
|
|
('location', models.CharField(blank=True, default='', help_text='楼层/房间/区域', max_length=200, verbose_name='设备位置')),
|
|
('cabinet', models.CharField(blank=True, default='', max_length=50, verbose_name='机柜')),
|
|
('cabinet_position', models.CharField(blank=True, default='', help_text='U位', max_length=50, verbose_name='机柜位置')),
|
|
('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='IP地址')),
|
|
('purchase_date', models.DateField(blank=True, null=True, verbose_name='采购日期')),
|
|
('warranty_expire', models.DateField(blank=True, null=True, verbose_name='质保到期')),
|
|
('supplier', models.CharField(blank=True, default='', max_length=100, verbose_name='供应商')),
|
|
('responsible_person', models.CharField(blank=True, default='', max_length=50, verbose_name='负责人')),
|
|
('status', models.CharField(choices=[('in_use', '在用'), ('idle', '闲置'), ('maintenance', '维修中'), ('scrapped', '已报废')], default='in_use', max_length=20, verbose_name='状态')),
|
|
('remark', models.TextField(blank=True, default='', verbose_name='备注')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
|
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
|
('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='assets', to='assetapp.category', verbose_name='设备分类')),
|
|
],
|
|
options={
|
|
'verbose_name': '硬件资产',
|
|
'verbose_name_plural': '硬件资产',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='AssetChangeLog',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('asset_number', models.CharField(db_index=True, max_length=50, verbose_name='资产编号')),
|
|
('action', models.CharField(choices=[('create', '创建'), ('update', '更新'), ('delete', '删除'), ('import', '导入'), ('export', '导出'), ('status_change', '状态变更')], max_length=20, verbose_name='操作类型')),
|
|
('field_name', models.CharField(blank=True, default='', max_length=50, verbose_name='变更字段')),
|
|
('old_value', models.TextField(blank=True, default='', verbose_name='旧值')),
|
|
('new_value', models.TextField(blank=True, default='', verbose_name='新值')),
|
|
('description', models.TextField(blank=True, default='', verbose_name='描述')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='操作时间')),
|
|
('asset', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='change_logs', to='assetapp.asset', verbose_name='资产')),
|
|
('operator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='操作人')),
|
|
],
|
|
options={
|
|
'verbose_name': '变更记录',
|
|
'verbose_name_plural': '变更记录',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
]
|