diff --git a/ups_management/ups_manager/forms.py b/ups_management/ups_manager/forms.py index 8a66df3..a6801bb 100644 --- a/ups_management/ups_manager/forms.py +++ b/ups_management/ups_manager/forms.py @@ -4,6 +4,12 @@ from .models import UPSHost, Battery class UPSHostForm(forms.ModelForm): + last_maintenance_date = forms.CharField( + required=False, + label='上次维保时间', + widget=forms.TextInput(attrs={'class': 'form-control datepicker', 'placeholder': '选择日期'}), + ) + class Meta: model = UPSHost fields = ['brand', 'model', 'ip_address', 'quantity', 'location', 'last_maintenance_date', 'contact'] @@ -13,7 +19,6 @@ class UPSHostForm(forms.ModelForm): 'ip_address': 'IP地址', 'quantity': '数量', 'location': '存放位置', - 'last_maintenance_date': '上次维保时间', 'contact': '联系人', } widgets = { @@ -22,12 +27,37 @@ class UPSHostForm(forms.ModelForm): 'ip_address': forms.TextInput(attrs={'class': 'form-control'}), 'quantity': forms.NumberInput(attrs={'class': 'form-control', 'min': '1'}), 'location': forms.TextInput(attrs={'class': 'form-control'}), - 'last_maintenance_date': forms.DateInput(attrs={'class': 'form-control datepicker', 'type': 'text', 'placeholder': 'YYYY-MM-DD'}), 'contact': forms.Select(attrs={'class': 'form-control'}), } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.instance and self.instance.pk and self.instance.last_maintenance_date: + self.fields['last_maintenance_date'].initial = self.instance.last_maintenance_date.strftime('%Y-%m-%d') + + def clean_last_maintenance_date(self): + date_str = self.cleaned_data.get('last_maintenance_date') + if date_str: + from datetime import datetime + try: + return datetime.strptime(date_str, '%Y-%m-%d').date() + except ValueError: + return date_str + return None class BatteryForm(forms.ModelForm): + install_date = forms.CharField( + required=False, + label='安装日期', + widget=forms.TextInput(attrs={'class': 'form-control form-control-sm datepicker-battery', 'placeholder': '选择日期'}), + ) + last_maintenance_date = forms.CharField( + required=False, + label='上次维保时间', + widget=forms.TextInput(attrs={'class': 'form-control form-control-sm datepicker-battery', 'placeholder': '选择日期'}), + ) + class Meta: model = Battery fields = ['brand', 'model', 'weight', 'quantity', 'location', 'install_date', 'last_maintenance_date'] @@ -37,8 +67,6 @@ class BatteryForm(forms.ModelForm): 'weight': '重量(kg)', 'quantity': '数量', 'location': '存放位置', - 'install_date': '安装日期', - 'last_maintenance_date': '上次维保时间', } widgets = { 'brand': forms.TextInput(attrs={'class': 'form-control form-control-sm'}), @@ -46,9 +74,35 @@ class BatteryForm(forms.ModelForm): 'weight': forms.NumberInput(attrs={'class': 'form-control form-control-sm', 'step': '0.1'}), 'quantity': forms.NumberInput(attrs={'class': 'form-control form-control-sm', 'min': '1'}), 'location': forms.TextInput(attrs={'class': 'form-control form-control-sm'}), - 'install_date': forms.DateInput(attrs={'class': 'form-control form-control-sm datepicker-battery', 'type': 'text', 'placeholder': 'YYYY-MM-DD'}), - 'last_maintenance_date': forms.DateInput(attrs={'class': 'form-control form-control-sm datepicker-battery', 'type': 'text', 'placeholder': 'YYYY-MM-DD'}), } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.instance and self.instance.pk: + if self.instance.install_date: + self.fields['install_date'].initial = self.instance.install_date.strftime('%Y-%m-%d') + if self.instance.last_maintenance_date: + self.fields['last_maintenance_date'].initial = self.instance.last_maintenance_date.strftime('%Y-%m-%d') + + def clean_install_date(self): + date_str = self.cleaned_data.get('install_date') + if date_str: + from datetime import datetime + try: + return datetime.strptime(date_str, '%Y-%m-%d').date() + except ValueError: + return date_str + return None + + def clean_last_maintenance_date(self): + date_str = self.cleaned_data.get('last_maintenance_date') + if date_str: + from datetime import datetime + try: + return datetime.strptime(date_str, '%Y-%m-%d').date() + except ValueError: + return date_str + return None BatteryFormSet = inlineformset_factory(