Add battery inline editing for UPS host

This commit is contained in:
xiaji
2026-04-30 10:34:07 +08:00
parent c7fa0a8dd0
commit cea28e5b62
3 changed files with 187 additions and 0 deletions

View File

@@ -1,7 +1,9 @@
from django.shortcuts import render, redirect
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from django.contrib import messages
from .models import UPSHost, Battery, Contact, Supplier, MaintenanceRecord
from .forms import BatteryFormSet
class DashboardView(ListView):
@@ -106,6 +108,27 @@ class UPSHostUpdateView(UpdateView):
template_name = 'ups_manager/ups_form.html'
fields = ['brand', 'model', 'ip_address', 'quantity', 'location', 'last_maintenance_date', 'contact']
success_url = reverse_lazy('ups_list')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.request.POST:
context['battery_formset'] = BatteryFormSet(self.request.POST, instance=self.object)
else:
context['battery_formset'] = BatteryFormSet(instance=self.object)
return context
def form_valid(self, form):
context = self.get_context_data()
battery_formset = context['battery_formset']
if battery_formset.is_valid():
self.object = form.save()
battery_formset.instance = self.object
battery_formset.save()
messages.success(self.request, 'UPS主机和电池信息已更新')
return redirect(self.success_url)
else:
return self.form_invalid(form)
class UPSHostDeleteView(DeleteView):