61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
import os
|
|
import django
|
|
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ups_management.settings')
|
|
django.setup()
|
|
|
|
from ups_manager.models import UPSHost, Battery
|
|
|
|
print("=== 开始拆分UPS主机记录 ===")
|
|
|
|
ups_to_split = UPSHost.objects.filter(quantity__gt=1)
|
|
print(f"\n找到 {ups_to_split.count()} 条数量大于1的UPS主机记录")
|
|
|
|
for ups in ups_to_split:
|
|
print(f"\n处理: {ups.brand} {ups.model} - {ups.location} - 数量: {ups.quantity}")
|
|
|
|
original_quantity = ups.quantity
|
|
|
|
ups.quantity = 1
|
|
ups.save()
|
|
print(f" 保留第一条记录: IP={ups.ip_address}, 数量=1")
|
|
|
|
batteries = list(ups.battery_set.all())
|
|
battery_per_ups = {}
|
|
for battery in batteries:
|
|
if battery.quantity > original_quantity:
|
|
battery_per_ups[battery] = battery.quantity // original_quantity
|
|
battery.quantity = battery.quantity // original_quantity
|
|
battery.save()
|
|
else:
|
|
battery_per_ups[battery] = 1
|
|
|
|
for i in range(1, original_quantity):
|
|
new_ups = UPSHost.objects.create(
|
|
brand=ups.brand,
|
|
model=ups.model,
|
|
ip_address=f"{ups.ip_address}-{i+1}",
|
|
quantity=1,
|
|
location=ups.location,
|
|
last_maintenance_date=ups.last_maintenance_date,
|
|
contact=ups.contact
|
|
)
|
|
|
|
for battery, qty in battery_per_ups.items():
|
|
Battery.objects.create(
|
|
brand=battery.brand,
|
|
model=battery.model,
|
|
weight=battery.weight,
|
|
quantity=qty,
|
|
location=battery.location,
|
|
install_date=battery.install_date,
|
|
last_maintenance_date=battery.last_maintenance_date,
|
|
ups_host=new_ups
|
|
)
|
|
|
|
print(f" 创建第 {i+1} 条记录: IP={new_ups.ip_address}, 数量=1")
|
|
|
|
print(f"\n=== 拆分完成 ===")
|
|
print(f"当前UPS主机总数: {UPSHost.objects.count()}")
|
|
print(f"当前电池总数: {Battery.objects.count()}")
|