0001_initial.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # Generated by Django 5.2.13 on 2026-04-24 10:33
  2. import django.db.models.deletion
  3. from django.conf import settings
  4. from django.db import migrations, models
  5. class Migration(migrations.Migration):
  6. initial = True
  7. dependencies = [
  8. migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  9. ]
  10. operations = [
  11. migrations.CreateModel(
  12. name='Category',
  13. fields=[
  14. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  15. ('name', models.CharField(max_length=50, unique=True, verbose_name='分类名称')),
  16. ('description', models.CharField(blank=True, default='', max_length=200, verbose_name='描述')),
  17. ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
  18. ],
  19. options={
  20. 'verbose_name': '设备分类',
  21. 'verbose_name_plural': '设备分类',
  22. 'ordering': ['name'],
  23. },
  24. ),
  25. migrations.CreateModel(
  26. name='Asset',
  27. fields=[
  28. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  29. ('asset_number', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='资产编号')),
  30. ('name', models.CharField(max_length=100, verbose_name='设备名称')),
  31. ('brand', models.CharField(blank=True, default='', max_length=50, verbose_name='品牌')),
  32. ('model', models.CharField(blank=True, default='', max_length=100, verbose_name='型号')),
  33. ('serial_number', models.CharField(blank=True, db_index=True, default='', max_length=100, verbose_name='序列号')),
  34. ('location', models.CharField(blank=True, default='', help_text='楼层/房间/区域', max_length=200, verbose_name='设备位置')),
  35. ('cabinet', models.CharField(blank=True, default='', max_length=50, verbose_name='机柜')),
  36. ('cabinet_position', models.CharField(blank=True, default='', help_text='U位', max_length=50, verbose_name='机柜位置')),
  37. ('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='IP地址')),
  38. ('purchase_date', models.DateField(blank=True, null=True, verbose_name='采购日期')),
  39. ('warranty_expire', models.DateField(blank=True, null=True, verbose_name='质保到期')),
  40. ('supplier', models.CharField(blank=True, default='', max_length=100, verbose_name='供应商')),
  41. ('responsible_person', models.CharField(blank=True, default='', max_length=50, verbose_name='负责人')),
  42. ('status', models.CharField(choices=[('in_use', '在用'), ('idle', '闲置'), ('maintenance', '维修中'), ('scrapped', '已报废')], default='in_use', max_length=20, verbose_name='状态')),
  43. ('remark', models.TextField(blank=True, default='', verbose_name='备注')),
  44. ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
  45. ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
  46. ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
  47. ('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='assets', to='assetapp.category', verbose_name='设备分类')),
  48. ],
  49. options={
  50. 'verbose_name': '硬件资产',
  51. 'verbose_name_plural': '硬件资产',
  52. 'ordering': ['-created_at'],
  53. },
  54. ),
  55. migrations.CreateModel(
  56. name='AssetChangeLog',
  57. fields=[
  58. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  59. ('asset_number', models.CharField(db_index=True, max_length=50, verbose_name='资产编号')),
  60. ('action', models.CharField(choices=[('create', '创建'), ('update', '更新'), ('delete', '删除'), ('import', '导入'), ('export', '导出'), ('status_change', '状态变更')], max_length=20, verbose_name='操作类型')),
  61. ('field_name', models.CharField(blank=True, default='', max_length=50, verbose_name='变更字段')),
  62. ('old_value', models.TextField(blank=True, default='', verbose_name='旧值')),
  63. ('new_value', models.TextField(blank=True, default='', verbose_name='新值')),
  64. ('description', models.TextField(blank=True, default='', verbose_name='描述')),
  65. ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='操作时间')),
  66. ('asset', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='change_logs', to='assetapp.asset', verbose_name='资产')),
  67. ('operator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='操作人')),
  68. ],
  69. options={
  70. 'verbose_name': '变更记录',
  71. 'verbose_name_plural': '变更记录',
  72. 'ordering': ['-created_at'],
  73. },
  74. ),
  75. ]